我遇到了haml-mode的region-indent-function
问题,我试图在另一个主要模式中重复使用。我们应该能够通过在haml-indent-region被排除之后保持区域被标记来循环区域缩进,但它不能按预期工作。经过一番黑客左右,我发现,在函数的末尾抛出一个错误使得Emacs的保持标记的区域中,如本例:使区域缩进功能保持区域标记
(defun haml-indent-region (start end)
(save-excursion
...)
(error "")) ;; Terrible hack
但我真的不喜欢它。有没有这样一个可怕的黑客得到这种行为的干净方式?
我不明白。 'save-excursion'应保存并恢复点和标记;即该地区......抛出一个错误应该与它无关。这不是你观察到的行为吗? – Nemo
它应该,但在这里我怀疑Emacs是如何处理主要模式缩进区域功能的问题。在这个函数被调用之后(没有错误)该区域未被标记。至少这是我从测试中看到的。 –
也许标记仍然设置,但只是“停用”?你是否尝试过使用'(activate-mark)'来重新激活标记(从而突出显示该区域)? – Nemo