【发布时间】:2013-08-17 15:27:53
【问题描述】:
假设我有这段代码,它显示了 mapcar 的使用示例
(mapcar #'1+ (list 10 20 30)) ; ⇒ (11 21 31)
(mapcar (lambda (it)
(* 2 it))
(list 0 1 2 3))
;; ⇒ (0 2 4 6)
(require cl-lib)
(cl-mapcar #'+
'(1 2 3)
'(10 20 30))
;; ⇒ (11 22 33)
我可能会将这段代码保存在某个地方,以便在教程中使用它,或者当我忘记 mapcar 的工作原理时,我可以快速阅读代码。
现在假设我想更新代码中的一些示例。例如,我可以将第二个示例中的(list 0 1 2 3) 更改为其他列表。在我更改示例之后,相应的结果注释就已经过时了。结果评论也需要更新。所以我评估表格,复制结果,并用新结果替换评论中的旧结果。是否有一个软件包可以帮助我轻松且不那么繁琐地完成这一切?这与 litable 或 ielm 包解决的问题不同,因为这只是更新现有示例代码。
现在我用的是:
(defun my-insert-eval-last-sexp ()
(interactive)
(let ((beg (point)))
(let ((current-prefix-arg '(4)))
(call-interactively 'eval-last-sexp))
(goto-char beg)
(if (looking-back ")")
(insert " ; "))
(insert "⇒ ")
(move-end-of-line 1)))
这仍然不够,因为它只是添加结果注释而不是更新旧注释,并且当表单评估为数字时会插入奇怪的东西:
(+ 1 2)
;; ⇒ 3 (#o3, #x3)
【问题讨论】: