Emacs 如何在SMIE中定义多字符括号
我复制了GNU手册中关于SMIE的代码。Emacs 如何在SMIE中定义多字符括号,emacs,indentation,parentheses,auto-indent,smie,Emacs,Indentation,Parentheses,Auto Indent,Smie,我复制了GNU手册中关于SMIE的代码。begin和end的缩进工作正常 (defvar sample-smie-grammar (smie-prec2->grammar (smie-bnf->prec2 '((id) (inst ("begin" insts "end") ("if" exp "then" inst "else" inst) (id ":=" exp) (exp))
begin
和end
的缩进工作正常
(defvar sample-smie-grammar
(smie-prec2->grammar
(smie-bnf->prec2
'((id)
(inst ("begin" insts "end")
("if" exp "then" inst "else" inst)
(id ":=" exp)
(exp))
(insts (insts ";" insts) (inst))
(exp (exp "+" exp)
(exp "*" exp)
("(" exps ")"))
(exps (exps "," exps) (exp)))
'((assoc ";"))
'((assoc ","))
'((assoc "+") (assoc "*")))))
但是,当我尝试添加class
/endclass
,module
/endmodule
,如下所示时,新添加的对根本不缩进。当我启用显示参数模式时
。它们不会突出显示为开始
和结束
的状态
(defvar sample-smie-grammar
(smie-prec2->grammar
(smie-bnf->prec2
'((id)
(inst ("begin" insts "end")
("module" insts "endmodule")
("class" insts "endclass")
("if" exp "then" inst "else" inst)
(id ":=" exp)
(exp))
(insts (insts ";" insts) (inst))
(exp (exp "+" exp)
(exp "*" exp)
("(" exps ")"))
(exps (exps "," exps) (exp)))
'((assoc ";"))
'((assoc ","))
'((assoc "+") (assoc "*")))))
“不起作用”是一个无用的行为描述。对不起,我的英语不好。加上一些词,试着弄清楚。问题可能在于方法论。所以请详细地告诉我们你是如何尝试的:你按了哪些键,按了什么顺序。