Community
    • 登入

    New built-in Plugin Admin (Plugin Manager) is ready

    已排程 已置頂 已鎖定 已移動 Notepad++ & Plugin Development
    117 貼文 22 Posters 133.9k 瀏覽
    正在載入更多貼文
    • 從舊到新
    • 從新到舊
    • 最多點贊
    回覆
    • 在新貼文中回覆
    登入後回覆
    此主題已被刪除。只有擁有主題管理權限的使用者可以查看。
    • dinkumoilD
      dinkumoil
      最後由 編輯

      @donho said:

      Could you define the API you need by

      Back from garden work and too tired to do anything. Will do it tomorrow.

      1 條回覆 最後回覆 回覆 引用 1
      • dailD
        dail @donho
        最後由 編輯

        @donho said:

        Quick check in the SurroundSelection, found out the reason:
        The name of plugin in the package is SurroundSelection_64.dll instead of SurroundSelection.dll.

        Ah yes you are right. Unfortunately I don’t know when I’ll have time to repackage/release them with the correct naming convention.

        1 條回覆 最後回覆 回覆 引用 0
        • dinkumoilD
          dinkumoil
          最後由 dinkumoil 編輯

          @donho

          Query full plugin DLL file path by message sent to Npp

          As far as I know Npp is not able to know which plugin has sent a message to it. Thus the plugin has to send:

          • its HMODULE (or some other unique ID known by Npp)
          • a pointer to a buffer receiving the plugin DLL path
          • the length of this buffer.

          These are three parameters, that means it is one too much. In the following my proposal.

          An additional struct type has to be introduced which can hold the buffer pointer and its length. The DLL HMODULE should be send as WPARAM and a pointer to the aforementioned struct as LPARAM.

          #define NPPM_GETPLUGINDLLFILEPATH (NPPMSG + 97)
          // BOOL NPPM_GETPLUGINDLLFILEPATH(HMODULE hDllModuleHandle, bufferDesc *buffer)
          // Get full plugin DLL file path.
          // If the function succeeds the return value is TRUE and the variable bufLen
          // points to contains the number of TCHARs which have been copied to the buffer
          // (not including the terminating 0-TCHAR).
          // If the buffersize is too small the function fails. The return value is FALSE
          // and the variable bufLen points to contains the number of TCHARs needed to hold
          // the full plugin DLL file path (not including the terminating 0-TCHAR).
          // If the function fails for another reason the return value is FALSE and the
          // variable bufLen points to is set to 0.
          //
          // hDllModuleHandle can be obtained in DllMain when it is called with DLL_PROCESS_ATTACH.
          // It is possible to call the function with bufDllPath set to NULL and the variable
          // bufLen points to set to 0 to obtain the needed buffer size.
          
                  struct bufferDesc {
                    TCHAR *bufDllPath;
                    DWORD *bufLen;
                  };
          

          If you have any idea for another way to identify the calling plugin DLL feel free to change the API and its definition.

          1 條回覆 最後回覆 回覆 引用 0
          • dinkumoilD
            dinkumoil
            最後由 dinkumoil 編輯

            @donho

            When digging in PowerEditor/src/MISC/PluginsManager/Notepad_plus_msgs.h I became aware that there is a problem with NPPM_GETPLUGINSCONFIGDIR. Its API documentation is very rudimentary. It is not clear if the function can handle paths longer than MAX_PATH (I guess not) and how it handles buffers with insufficient size.

            Wouldn’t it be good to review the code of this function and possibly change its implementation in a way that it can handle paths longer than MAX_PATH and that it is possible to query the needed file path buffer size? Before you ask me: I’m not able to do that because I’m not a C++ dev.

            1 條回覆 最後回覆 回覆 引用 0
            • dinkumoilD
              dinkumoil
              最後由 編輯

              @donho
              I’ve seen that you already changed plugin loading behaviour for the next Npp release (commits 7e555b6, e9a489c and 1132125).

              I think it would be a good idea if the installer of the upcoming version would warn users that they can not use all old-style plugins anymore if they continue installation. Otherwise I’m afraid that a lot of angry users will flood the support forum with complains á la “New Npp version is destroying my workflows and productivity!”.

              1 條回覆 最後回覆 回覆 引用 1
              • dailD
                dail
                最後由 編輯

                @donho

                I came up with an easier way than re-releasing etc all my plugins for 64 bit…here is the entries for the 64 bit list I would appreciate if you could test to make sure they work since I’m currently unable to test it. Thanks.

                	{
                		"folder-name": "BetterMultiSelection",
                		"display-name": "BetterMultiSelection",
                		"version": "1.3",
                		"id": "e030a73278798df62c9f956f493e2baff1bb1ac8816c6a42e53a12c178ba56bc",
                		"repository": "https://github.com/dail8859/BetterMultiSelection/releases/download/v1.3/BetterMultiSelection_v1.3_x64_PA.zip",
                		"description": "Provides better cursor movements when using multiple selections.",
                		"author": "Justin Dailey",
                		"homepage": "https://github.com/dail8859/BetterMultiSelection"
                	},
                	{
                		"folder-name": "DoxyIt",
                		"display-name": "DoxyIt",
                		"version": "0.4.3",
                		"id": "8b63b3905b595795f263ed81340cf42bfcb0a42e8dabac78872c1bd72cdf59e8",
                		"repository": "https://github.com/dail8859/DoxyIt/releases/download/v0.4.3/DoxyIt_64_PA.zip",
                		"description": "Support for creating Doxygen comments.",
                		"author": "Justin Dailey",
                		"homepage": "https://github.com/dail8859/DoxyIt"
                	},
                	{
                		"folder-name": "ElasticTabstops",
                		"display-name": "ElasticTabstops",
                		"version": "1.3",
                		"id": "c5c9642b0c1b0bb8e59b1922346c3c4f434b29594b2630818eb7b288771e007b",
                		"repository": "https://github.com/dail8859/ElasticTabstops/releases/download/v1.3/ElasticTabstops_64_PA.zip",
                		"description": "Support for Elastic Tabstops.",
                		"author": "Justin Dailey",
                		"homepage": "https://github.com/dail8859/ElasticTabstops"
                	},
                	{
                		"folder-name": "LuaScript",
                		"display-name": "LuaScript",
                		"version": "0.8",
                		"id": "96d4eeafe46fa93434b7e4e70140691048c24cb5e40acba93aa1e10a57b19e7e",
                		"repository": "https://github.com/dail8859/LuaScript/releases/download/v0.8/LuaScript_v0.8_x64_PA.zip",
                		"description": "Adds Lua scripting capabilities. This provides control over all of Scintilla's features and options with a light-weight, fully-functional programming language.",
                		"author": "Justin Dailey",
                		"homepage": "https://github.com/dail8859/LuaScript"
                	},
                	{
                		"folder-name": "SurroundSelection",
                		"display-name": "SurroundSelection",
                		"version": "1.1",
                		"id": "f31a113cf30fdb286fd4d2dc40d2bfe4e66d0c0567dc5384d84e06635aeb8423",
                		"repository": "https://github.com/dail8859/SurroundSelection/releases/download/v1.1/SurroundSelection_64_PA.zip",
                		"description": "Automatically surround the selection in quotes/brackets/parenthesis/etc.",
                		"author": "Justin Dailey",
                		"homepage": "https://github.com/dail8859/SurroundSelection"
                	}
                
                donhoD 1 條回覆 最後回覆 回覆 引用 0
                • donhoD
                  donho @dail
                  最後由 編輯

                  @dail
                  64-bit plugins passed. commited and merged.

                  dailD 1 條回覆 最後回覆 回覆 引用 1
                  • dailD
                    dail @donho
                    最後由 編輯

                    @donho said:

                    64-bit plugins passed. commited and merged.

                    Thanks! Much appreciated.

                    1 條回覆 最後回覆 回覆 引用 1
                    • donhoD
                      donho
                      最後由 編輯

                      @dinkumoil said:

                      Query full plugin DLL file path by message sent to Npp

                      How about “Query full plugins home path by message sent to Npp” ?
                      Since there is only one location of plugin from 7.6 version, the plugins home path\pluginUniqueName\pluginUniqueName.dll is full plugin DLL file path.

                      1 條回覆 最後回覆 回覆 引用 2
                      • dinkumoilD
                        dinkumoil
                        最後由 編輯

                        @donho said:

                        How about “Query full plugins home path by message sent to Npp” ?

                        Would be good too and would reduce the parameters to 2 (pointer to buffer and pointer to buffer length), thus no additional struct neccessary. Would be great if you would implement it this way.

                        1 條回覆 最後回覆 回覆 引用 2
                        • donhoD
                          donho
                          最後由 編輯

                          @dinkumoil Then it will be:

                          #define NPPM_GETPLUGINHOMEPATH (NPPMSG + 97)
                          // BOOL NPPM_GETPLUGINHOMEPATH (size_t strLen, TCHAR *str)
                          // Get plugin home root path.
                          // where str is the allocated TCHAR array by user,
                          //  strLen is the allocated array size by user
                          // The return value is TRUE when get generic_string operation success
                          // Otherwise (allocated array size is too small) FALSE
                          

                          What do you think ?

                          1 條回覆 最後回覆 回覆 引用 1
                          • dinkumoilD
                            dinkumoil
                            最後由 dinkumoil 編輯

                            @donho

                            Better would be:

                            #define NPPM_GETPLUGINHOMEPATH (NPPMSG + 97)
                            // INT NPPM_GETPLUGINHOMEPATH(size_t strLen, TCHAR *pluginRootPath)
                            // Get plugin home root path.
                            // Returns the number of TCHAR copied/to copy.
                            // Users should call it with pluginRootPath be NULL to get the required
                            // number of TCHAR (not including the terminating nul character), allocate
                            // pluginRootPath buffer with the return value + 1, then call it again to
                            // get the path.
                            
                            donhoD 1 條回覆 最後回覆 回覆 引用 2
                            • donhoD
                              donho @dinkumoil
                              最後由 編輯

                              @dinkumoil

                              Done:
                              https://notepad-plus-plus.org/pluginListTestTools/

                              1 條回覆 最後回覆 回覆 引用 5
                              • dinkumoilD
                                dinkumoil
                                最後由 編輯

                                @donho

                                Thank you, much appreciated!

                                1 條回覆 最後回覆 回覆 引用 0
                                • chcgC
                                  chcg
                                  最後由 編輯

                                  @donho What do you think about plugin entries regarding we know the plugin, but it could currently not be automatically installed and the user need to do it manually. And later one a hint for installed plugins not known to the PA so the user can report them at https://github.com/notepad-plus-plus/nppPluginList.

                                  1 條回覆 最後回覆 回覆 引用 0
                                  • SinghRajenMS
                                    SinghRajenM moderator
                                    最後由 編輯

                                    @donho,
                                    I have a quick question here.
                                    What if there are more that two users on a PC. Only one Admin user and rest are standard users. How PA will work?

                                    Consider a case:
                                    Admin installed Npp, so will standard or any other user be able to access PA? I feel ‘nppPluginList.dll’ should go to %allusersprofile% instead of %appdata% or can it be kept in %programfiles% itself?

                                    1 條回覆 最後回覆 回覆 引用 2
                                    • Karl-Heinz TuchnerK
                                      Karl-Heinz Tuchner
                                      最後由 編輯

                                      Have the following problem:
                                      Where can I find the plugin admin in v. 7.6? In the menu bar, I find no entry plugins

                                      Meta ChuhM 1 條回覆 最後回覆 回覆 引用 0
                                      • dinkumoilD
                                        dinkumoil
                                        最後由 編輯

                                        @Karl-Heinz-Tuchner said:

                                        Where can I find the plugin admin in v. 7.6? In the menu bar.

                                        In the german locale there is in the main menu bar an entry Erweiterungen. In its drop down menu you will find an entry Plugin Admin.

                                        1 條回覆 最後回覆 回覆 引用 1
                                        • Meta ChuhM
                                          Meta Chuh moderator @Karl-Heinz Tuchner
                                          最後由 編輯

                                          @Karl-Heinz-Tuchner

                                          not being able to see plugins or not even the plugin menu normally only happens under the following cases:
                                          you have installed from the installer and selected the installer option “don’t use %APPDATA%” when you installed it
                                          or
                                          you are using the portable release npp.7.6.bin.zip which does not include plugins admin at the moment
                                          or
                                          you have put the portable np++ into the Program Files (x86) folder

                                          could you post your debug info here so we can see how it has been installed ?
                                          (menu bar > ? > debug info > copy debug info to clipboard)

                                          1 條回覆 最後回覆 回覆 引用 1
                                          • Karl-Heinz TuchnerK
                                            Karl-Heinz Tuchner
                                            最後由 編輯

                                            @Meta-Chuh

                                            Here the debug info:

                                            Notepad++ v7.6 (64-bit)
                                            Build time : Nov 13 2018 - 00:12:05
                                            Path : C:\Program Files\Notepad++\notepad++.exe
                                            Admin mode : ON
                                            Local Conf mode : OFF
                                            OS : Windows 10 (64-bit)
                                            Plugins : none

                                            I think I found the mistake.
                                            I used the option “do not use% APPDATA%”.
                                            How can I undo this?

                                            Meta ChuhM 1 條回覆 最後回覆 回覆 引用 1
                                            • 第一個貼文
                                              最後的貼文
                                            The Community of users of the Notepad++ text editor.
                                            Powered by NodeBB | Contributors