我正试图为移动语句i COBOL创建一个yasnippet。写移动语句是我们经常做的事情,我希望尽可能快和高效地使用它。
通常是这样的:
MOVE variable-1 TO variable-2但有时您也使用函数:
MOVE FUNCTION LENGTH(variable-1) TO variable-2所以我想要的是一个片段,它跳过字段-2如果字段-1=“函数”。
我现在拥有的是:
MOVE $1 ${2:$$(unless (or yas-modified-p yas-moving-away-p (equal (upcase (yas-field-value 1)) "FUNCTION")) (yas-skip-and-clear-field))} TO $0这对“移动功能”非常有用.情况并非如此。在这里,当我在输入varaible-1后按下字段-1,我得到(游标是_):
MOVE variable-1 #<marker at 2998 in text.cbl>| TO因此,yas-skip-and-clear-field的返回值似乎是打印出来的,而不是跳转到$0。
我怎么能解决这个问题?或者有什么更好的方法来做这件事?
发布于 2022-01-06 14:56:32
如果将FUNCTION ALL INSTRINSIC添加到Configuration Section中的Repository段落中,则无需在MOVE语句中编写FUNCTION代码。这可能会减轻您的问题,而不必使用雅斯尼普。
发布于 2022-09-14 09:29:29
我为systemverilog的“逻辑”编写了类似的代码片段,其语法是:
logic MySignal;或
logic [31:0] mybus;因此,理想情况下,如果输入‘逻辑’后面跟着‘逻辑’,代码段将无条件地展开第一个字段。如果该字段包含number:number,则它用name展开另一个字段。如果未找到[],则该字段被视为信号名称。
这并不完美,但我想说的是:
# -*- mode: snippet -*-
# name: logic
# key: logic
# --
logic ${1:range_or_signal}${2: $(if (string-match "\\[[0-9\s]+:[0-9\s]+\\]" (yas-field-value 1)) (concat " " (string-trim yas-text)) (yas-auto-next ""))};
$0基本上,第一个字段总是输入,如果第一个字段不是向量定义,则跳过另一个字段。跳过由yas-auto-next执行。
https://stackoverflow.com/questions/70590568
复制相似问题