【发布时间】:2014-01-03 03:29:52
【问题描述】:
起始条件是*scratch*中的这段文字:
(
form
30
)
(
baz
41
)
空格是这里唯一重要的东西。
现在,在form 中的o 上,使用 M-:(eval-expression) 进行评估
这段代码:
(save-excursion
(up-list)
(backward-list)
(indent-sexp))
给予
(
form
30
)
点在o。 r,m,0,a,z,1 上的点重复相同(预期的)行为。
但是对于f、3、b、4 上的起点,结果点是前一个字符
预期的位置。
这是预期的行为还是错误? 如果符合预期,我想了解更多有关规则和极端情况的信息。
UPD:添加直观的保存游览变体
以防万一有人想要它,
这是对我来说更直观的行为(即在f、3 等上保存点):
(defmacro save-excursion-ex (&rest body)
"More intuitive (`save-excursion' BODY)."
`(let ((ext (save-match-data
(looking-back "^\\s-*")))
(out (save-excursion
,@body)))
(if ext
(if (or (bolp)
(= (point)
(save-excursion
(back-to-indentation)
(point))))
(back-to-indentation)
(error "Unexpected")))
out))
【问题讨论】:
-
这是在
emacs -Q会话中吗?