3.10.1 save-excursion 表达式模板

使用 save-excursion 的代码模板很简单:

(save-excursion
  body...)

函数体由一个或多个表达式组成,会被 Lisp 解释器依次求值。 如果体内有多个表达式,最后一个表达式的值会作为 save-excursion 函数的返回值。 体内其他表达式仅因副作用被求值; 而 save-excursion 本身也只依靠其副作用(即恢复光标位置)发挥作用。

更详细地看,save-excursion 表达式的模板如下:

(save-excursion
  first-expression-in-body
  second-expression-in-body
  third-expression-in-body
   ...
  last-expression-in-body)

一个表达式既可以是单独的符号,也可以是列表。

在 Emacs Lisp 代码中,save-excursion 表达式 经常出现在 let 表达式的内部,写法如下:

(let varlist
  (save-excursion
    body...))