Community
    • 登入

    Function List not working in v7.2

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

      Notepad++ uses the commentExpr to determine which parts of the text to skip when searching for classes, methods and/or functions.
      “Embedded” comments are not supported.

      1 條回覆 最後回覆 回覆 引用 0
      • MAPJe71M
        MAPJe71
        最後由 編輯

        @t12122013-Fink
        See also issues #344 and #1023 on GitHub.

        1 條回覆 最後回覆 回覆 引用 0
        • David LiangD
          David Liang
          最後由 編輯

          C# function list fix for v7.4.2
          Basically copy the function section inside classRange and paste it at the same level of classRange.
          <!-- ========================================================== [ C# ] -->

          		<!--
          		|   Based on:
          		|       http://sourceforge.net/p/notepad-plus/patches/613/
          		\-->
          		<parser
          			displayName="C#"
          			id         ="csharp_class"
          			commentExpr="(?s:/\*.*?\*/)|(?m-s://.*?$)"
          		>
          			<classRange
          				mainExpr    ="^[\t\x20]*((public|protected|private|internal)\s+)?(\w+\s*)?(class|struct|interface)[\t\x20]+[^\{]+\{"
          				openSymbole ="\{"
          				closeSymbole="\}"
          			>
          				<className>
          					<nameExpr expr="(class|struct|interface)[\t\x20]+\w+" />
          					<nameExpr expr="[\t\x20]+\w+" />
          					<nameExpr expr="\w+" />
          				</className>
          				<function
          					mainExpr="^[^\S\r\n]*(?&lt;modifier1&gt;(?:public|protected|internal|private)\s*)?(?&lt;modifier2&gt;(?:new|static|virtual|sealed|override|abstract|extern)\s*)?(partial\s*)?(?&lt;type&gt;(?!(return|if|else))\w+(?&lt;genericType&gt;&lt;[\w,\s&lt;&gt;]+&gt;)?\s+)(?&lt;name&gt;\w+(?&lt;genericNameType&gt;&lt;[\w,\s&lt;&gt;]+&gt;)?\s?)\((?&lt;params&gt;[\w\s,&lt;&gt;\[\]\:=\.]*)\)(?&lt;ctorChain&gt;\s*\:\s*(?:base|this)\s*\((?&lt;ctorParams&gt;[\w\s,&lt;&gt;\[\]\:=\.]*)\))?[\w\s&lt;&gt;\:,\(\)\[\]]*(?:\{|;)"
          				>
          					<functionName>
          						<funcNameExpr expr="(\w+(&lt;[\w,\s&lt;&gt;]+&gt;)?\s?)\(" />
          						<funcNameExpr expr="(\w+(&lt;[\w,\s&lt;&gt;]+&gt;)?\s?)" />
          					</functionName>
          				</function>
          			</classRange>
          			<function
          				mainExpr="^[^\S\r\n]*(?&lt;modifier1&gt;(?:public|protected|internal|private)\s*)?(?&lt;modifier2&gt;(?:new|static|virtual|sealed|override|abstract|extern)\s*)?(partial\s*)?(?&lt;type&gt;(?!(return|if|else))\w+(?&lt;genericType&gt;&lt;[\w,\s&lt;&gt;]+&gt;)?\s+)(?&lt;name&gt;\w+(?&lt;genericNameType&gt;&lt;[\w,\s&lt;&gt;]+&gt;)?\s?)\((?&lt;params&gt;[\w\s,&lt;&gt;\[\]\:=\.]*)\)(?&lt;ctorChain&gt;\s*\:\s*(?:base|this)\s*\((?&lt;ctorParams&gt;[\w\s,&lt;&gt;\[\]\:=\.]*)\))?[\w\s&lt;&gt;\:,\(\)\[\]]*(?:\{|;)"
          			>
          				<functionName>
          					<funcNameExpr expr="(\w+(&lt;[\w,\s&lt;&gt;]+&gt;)?\s?)\(" />
          					<funcNameExpr expr="(\w+(&lt;[\w,\s&lt;&gt;]+&gt;)?\s?)" />
          				</functionName>
          			</function>
          		</parser>
          
          maroonmoon13M 1 條回覆 最後回覆 回覆 引用 0
          • t12122013 FinkT
            t12122013 Fink
            最後由 t12122013 Fink 編輯

            @ MAPJe71
            Thank you for the explanation about comment handling. Of course I assumed Notepad++ would strip comments lexically, replacing them by an empty string, and only then apply mainExpr, but it seems not to be the case.

            For my situation and needs I prefer to disable commentExpr at all, and do the other minor improvements written in my comments. I do get all functions, and do not get false functions. Reasoning, I do not have functions inside comments, and I do not place comments in function headers except between ) and { . Besides that, functions temporarely commented out, may still count as functions.
            At least the <parser> above is a partial proposal to my and other’s issues.

            By the way do you have an idea how to remove the mis-written earlier posts. I was not fluent with this BB and with markup language, and is there a preview?

            MAPJe71M 1 條回覆 最後回覆 回覆 引用 0
            • MAPJe71M
              MAPJe71 @t12122013 Fink
              最後由 編輯

              @t12122013-Fink

              how to remove the mis-written earlier posts

              Use delete in the three-dots menu right next to ^ 0 v .

              is there a preview?

              As soon as you hit reply to open the edit pane you get either a preview pane on the right or a show preview option in the top right corner of the edit pane.

              1 條回覆 最後回覆 回覆 引用 0
              • t12122013 FinkT
                t12122013 Fink
                最後由 t12122013 Fink 編輯

                I’m only allowed to delete within 180 seconds. And today I get the preview, but yesterday there was none (preview availability depends on browser window width) . The BB is not easy but I’m motivated.

                About the issue, I propose to disable commentExpr because of the following cases:

                function setdata(x,y,z,w) // set coordinates x y z w

                function setdata(x,y,z,w) /* set coordinates x y z w */

                Functionlist will detect the function if there are two spaces between ) and the comment, but will not detect the function if there is just one space. My mainExpr as above given, stops after ) and does not eat one space.

                1 條回覆 最後回覆 回覆 引用 0
                • maroonmoon13M
                  maroonmoon13 @David Liang
                  最後由 編輯

                  @David-Liang Doesn’t work :(

                  1 條回覆 最後回覆 回覆 引用 0
                  • astrominionA
                    astrominion
                    最後由 編輯

                    i have problem too with Javascript functionList. I change the langID=58 (L_JAVASCRIPT) to langID=19 (L_JS) at :

                    <association id= “javascript_function” langID=“19” />

                    and it work verywell.

                    1 條回覆 最後回覆 回覆 引用 0
                    • Jonathan HJ
                      Jonathan H
                      最後由 編輯

                      This was bothering me for a while - turns out that even though I tick “don’t use roaming profiles” when installing, it still does so.
                      And the old config file was from 2016. So I simply copied the new version over from the notepad install dir and everything is OK now!

                      1 條回覆 最後回覆 回覆 引用 0
                      • pete312P
                        pete312
                        最後由 pete312 編輯

                        I recovered from this problem by uninstalling notepad++ and then renaming what was left in Program Files to oldNotepad++, then reinstalling notepad++. Something obviously is out of whack.

                        Takes less time this way

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