暗无天日

=============>DarkSun的个人博客

如何修改Elisp函数中的docstring

Elisp提供了 documentation 函数可以用来获取另一个函数的docstring,然而可惜它是不能通过 setf 修改的:

(defun foo ()
  "Old Docstring")
(documentation 'foo)
;; =>"Old Docstring"

(fset (documentation 'foo) "New Docstring")
;; Debugger entered--Lisp error: (wrong-type-argument symbolp "Old Docstring")

不过有一个比较hack的方法,就是修改symbol的 function-documentation 属性. 它的优先级要高于函数本身存储的docstring

(put 'foo 'function-documentation "New Docstring")
(documentation 'foo)
;; =>"New Docstring"