Skip to content

Latest commit

 

History

History
25 lines (21 loc) · 865 Bytes

如何修改Elisp函数中的docstring.org

File metadata and controls

25 lines (21 loc) · 865 Bytes

如何修改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"