Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Notepad++ 记事本++;UDL:折叠开始和结束的问题_Notepad++ - Fatal编程技术网

Notepad++ 记事本++;UDL:折叠开始和结束的问题

Notepad++ 记事本++;UDL:折叠开始和结束的问题,notepad++,Notepad++,我想正确折叠以下Z80汇编摘录的部分,但无法完成: .ORG $9D93 .DB t2ByteTok, tAsmCmp Increase: LD A, B CP 255 JR Z, KeyLoop INC B JR Display Decrease: LD A, B CP 0

我想正确折叠以下Z80汇编摘录的部分,但无法完成:

.ORG $9D93
        .DB     t2ByteTok, tAsmCmp

    Increase:
        LD      A, B
        CP      255
        JR      Z, KeyLoop
        INC     B
        JR      Display

    Decrease:
        LD      A, B
        CP      0
        JR      Z, KeyLoop
        DEC     B
        JR      Display

.END
在本摘录中,应创建三个折叠区域:

  • #1从.ORG$9D93转到.END
  • #2从“增加:”到“减少:”之前的行:
  • #3从“减少:”到“.结束”之前的行
这有两个问题:

  • 我能够通过在“代码1样式的折叠”中将关键字“ORG”设置为打开标记,并将“END”设置为关闭标记来创建第一次折叠。有趣的是,它不能用“.ORG”和“.END”作为标记。例如,如果圆点丢失,现在可以创建折叠。我必须以任何方式逃离这个点吗
  • 我根本不能让第二和第三个折叠工作。我试图添加“:”作为打开令牌,但在关闭令牌中添加什么?在下一次折叠开始或结束之前,它将是一条线。如何在UDL中表达这一点

请理解,折叠设计用于成对结构。构造

If (a)
|
|    If (b)
|    |
|    |    Print
|    |
|    End If
|
End If
将按预期折叠,但在您的情况下,评估为:

.ORG $9D93
|        .DB     t2ByteTok, tAsmCmp
|
|    Increase:
|    |    LD      A, B
|    |    CP      255
|    |    JR      Z, KeyLoop
|    |    INC     B
|    |    JR      Display
|    |
|    ? (NO MATCH)
|
|    Decrease:
|    |    LD      A, B
|    |    CP      0
|    |    JR      Z, KeyLoop
|    |    DEC     B
|    |    JR      Display
|    |
|    ? (NO MATCH)
|
.END
虽然这不是您想要实现的,但请尝试添加。以这种方式结束,您将看到所有3个折页都按预期工作:

.ORG $9D93
|        .DB     t2ByteTok, tAsmCmp
|
|    Increase:
|    |    LD      A, B
|    |    CP      255
|    |    JR      Z, KeyLoop
|    |    INC     B
|    |    JR      Display
|    .END
|
|    Decrease:
|    |    LD      A, B
|    |    CP      0
|    |    JR      Z, KeyLoop
|    |    DEC     B
|    |    JR      Display
|    .END
|
.END
就我对Notepad++中UDL的理解而言,您问题中建议的折叠方式是无法通过UDL实现的。也许它可以在不受简化UDL逻辑约束的内置N++语言中工作。为了让大多数人都能管理用户界面和逻辑,我们特意简化了UDL。(我不打算搜索我最近读到的地方,很抱歉并没有链接到最后一句话的来源。)

通过检查N++的内部工作,您可以添加自己的内置语言(而不是UDL),这将符合您的要求


<>强>编辑:< /强>我最近发现了这个评论:考虑另一个文本编辑器,即SyWrand,它具有更大的灵活性。请阅读Synw自述文件中的lexer教程Alextp 10月25日'13日19:46

感谢您在这么长时间之后给出的答案以及UDL/内置语言的背景信息,我将进一步研究这些:)@PacMani-我今天已经研究过了-检查Notepad++源代码存档中的目录“\scintella\lexers\”。中包含lexer文件;令牌检测也是按程序处理的,而不仅仅是声明性的。这意味着您有无限的可能性来实现您所需要的并构建自己的N++。祝你好运:)(或者你也可以看看我几天前在回答末尾添加的SynWrite。)很棒的东西!现在调查一下:)