Notepad++ 记事本++;UDL:折叠开始和结束的问题
我想正确折叠以下Z80汇编摘录的部分,但无法完成: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
.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。)很棒的东西!现在调查一下:)