From: Stefan Monnier Date: Fri, 10 Apr 2015 06:47:44 +0000 (-0400) Subject: * abbrev.el (define-abbrev-table): Refine last change. X-Git-Tag: emacs-25.0.90~2501 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3638632f0bde06aac848655e28e28d188b48cd64;p=emacs.git * abbrev.el (define-abbrev-table): Refine last change. --- diff --git a/lisp/abbrev.el b/lisp/abbrev.el index 424d9c4f30b..f9f078b5777 100644 --- a/lisp/abbrev.el +++ b/lisp/abbrev.el @@ -953,7 +953,6 @@ Abbrevs marked as \"system abbrevs\" are omitted." (insert " ))\n\n"))) nil))) -(put 'define-abbrev-table 'doc-string-elt 3) (defun define-abbrev-table (tablename definitions &optional docstring &rest props) "Define TABLENAME (a symbol) as an abbrev table name. @@ -973,11 +972,15 @@ Properties with special meaning: - `:enable-function' can be set to a function of no argument which returns non-nil if and only if the abbrevs in this table should be used for this instance of `expand-abbrev'." + (declare (doc-string 3)) ;; We used to manually add the docstring, but we also want to record this ;; location as the definition of the variable (in load-history), so we may ;; as well just use `defvar'. - (eval `(defvar ,tablename nil ,@(if (stringp docstring) (list docstring) - (when props (push docstring props) nil)))) + (if (and docstring props (symbolp docstring)) + ;; There is really no docstring, instead the docstring arg + ;; is a property name. + (push docstring props) (setq docstring nil)) + (eval `(defvar ,tablename nil ,@(if docstring (list docstring)))) (let ((table (if (boundp tablename) (symbol-value tablename)))) (unless table (setq table (make-abbrev-table))