【发布时间】:2011-06-30 01:50:27
【问题描述】:
我在使用 haml-mode 的 region-indent-function 时遇到问题,我正试图在另一个主要模式中重用它。我们应该能够通过在评估 haml-indent-region 之后保留标记的区域来循环区域缩进,但它不能按预期工作。经过一番修改后,我发现在函数末尾抛出错误会使 Emacs 保持区域标记,如下例所示:
(defun haml-indent-region (start end)
(save-excursion
...)
(error "")) ;; Terrible hack
但我真的不喜欢它。有没有一种干净的方法可以在没有如此可怕的黑客攻击的情况下获得这种行为?
【问题讨论】:
-
我不明白。
save-excursion应该保存和恢复点和标记;即区域......抛出错误应该与它无关。这不是你观察到的行为吗? -
应该,但在这里我怀疑 Emacs 如何处理主要模式 indent-region-function 这就是问题所在。在调用此函数(没有错误)之后,该区域未被标记。至少这是我从测试中看到的。
-
也许标记仍然设置但只是“停用”?您是否尝试过使用
(activate-mark)重新激活标记(从而突出显示该区域)? -
这不会改变任何事情。
标签: emacs elisp indentation