aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2012-05-17 21:46:20 -0400
committerStefan Monnier2012-05-17 21:46:20 -0400
commitb581bb5c8ac2aed4a610097aaaca4a8d354fe9b4 (patch)
tree3fac722bbeb0fdf55dc40e414732a3867f29c9e1
parent70b8ef8f7855b9983d17731acad2fdfb4fb2a5be (diff)
downloademacs-b581bb5c8ac2aed4a610097aaaca4a8d354fe9b4.tar.gz
emacs-b581bb5c8ac2aed4a610097aaaca4a8d354fe9b4.zip
* lisp/emacs-lisp/lisp-mode.el (doc-string-elt): Move those properties to
their respective macro declarations. * lisp/skeleton.el (define-skeleton): * lisp/progmodes/compile.el (define-compilation-mode): * lisp/ibuf-macs.el (define-ibuffer-sorter, define-ibuffer-op) (define-ibuffer-filter): * lisp/emacs-lisp/generic.el (define-generic-mode): * lisp/emacs-lisp/easy-mmode.el (define-minor-mode) (define-globalized-minor-mode): * lisp/emacs-lisp/cl-macs.el (defun*, defmacro*, defstruct, deftype): * lisp/emacs-lisp/byte-run.el (defsubst): * lisp/custom.el (deftheme): Add doc-string metadata.
-rw-r--r--lisp/ChangeLog15
-rw-r--r--lisp/cedet/mode-local.el4
-rw-r--r--lisp/custom.el1
-rw-r--r--lisp/emacs-lisp/byte-run.el2
-rw-r--r--lisp/emacs-lisp/cl-loaddefs.el66
-rw-r--r--lisp/emacs-lisp/cl-macs.el7
-rw-r--r--lisp/emacs-lisp/cl.el9
-rw-r--r--lisp/emacs-lisp/easy-mmode.el5
-rw-r--r--lisp/emacs-lisp/generic.el3
-rw-r--r--lisp/emacs-lisp/lisp-mode.el20
-rw-r--r--lisp/ibuf-macs.el6
-rw-r--r--lisp/progmodes/compile.el3
-rw-r--r--lisp/skeleton.el2
13 files changed, 112 insertions, 31 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index fcdb2ce65b7..e22b3d07985 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,18 @@
12012-05-18 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * emacs-lisp/lisp-mode.el (doc-string-elt): Move those properties to
4 their respective macro declarations.
5 * skeleton.el (define-skeleton):
6 * progmodes/compile.el (define-compilation-mode):
7 * ibuf-macs.el (define-ibuffer-sorter, define-ibuffer-op)
8 (define-ibuffer-filter):
9 * emacs-lisp/generic.el (define-generic-mode):
10 * emacs-lisp/easy-mmode.el (define-minor-mode)
11 (define-globalized-minor-mode):
12 * emacs-lisp/cl-macs.el (defun*, defmacro*, defstruct, deftype):
13 * emacs-lisp/byte-run.el (defsubst):
14 * custom.el (deftheme): Add doc-string metadata.
15
12012-05-17 Stefan Monnier <monnier@iro.umontreal.ca> 162012-05-17 Stefan Monnier <monnier@iro.umontreal.ca>
2 17
3 * emacs-lisp/cl-macs.el, emacs-lisp/cl.el: Move indent info. 18 * emacs-lisp/cl-macs.el, emacs-lisp/cl.el: Move indent info.
diff --git a/lisp/cedet/mode-local.el b/lisp/cedet/mode-local.el
index 7346e88797d..11968f3fa35 100644
--- a/lisp/cedet/mode-local.el
+++ b/lisp/cedet/mode-local.el
@@ -522,6 +522,9 @@ See also the function `define-overload'."
522 (list (mode-local--override name args body)) 522 (list (mode-local--override name args body))
523 result))) 523 result)))
524 524
525;;;###autoload
526(put 'define-overloadable-function 'doc-string-elt 3)
527
525(defmacro define-overloadable-function (name args docstring &rest body) 528(defmacro define-overloadable-function (name args docstring &rest body)
526 "Define a new function, as with `defun', which can be overloaded. 529 "Define a new function, as with `defun', which can be overloaded.
527NAME is the name of the function to create. 530NAME is the name of the function to create.
@@ -546,6 +549,7 @@ defined. The default is to call the function `NAME-default' with the
546appropriate arguments deduced from ARGS. 549appropriate arguments deduced from ARGS.
547OVERARGS is a list of arguments passed to the override and 550OVERARGS is a list of arguments passed to the override and
548`NAME-default' function, in place of those deduced from ARGS." 551`NAME-default' function, in place of those deduced from ARGS."
552 (declare (doc-string 3))
549 `(eval-and-compile 553 `(eval-and-compile
550 (defun ,name ,args 554 (defun ,name ,args
551 ,docstring 555 ,docstring
diff --git a/lisp/custom.el b/lisp/custom.el
index d0eadcc23ff..50481f2aa7f 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -1048,6 +1048,7 @@ The optional argument DOC is a doc string describing the theme.
1048 1048
1049Any theme `foo' should be defined in a file called `foo-theme.el'; 1049Any theme `foo' should be defined in a file called `foo-theme.el';
1050see `custom-make-theme-feature' for more information." 1050see `custom-make-theme-feature' for more information."
1051 (declare (doc-string 2))
1051 (let ((feature (custom-make-theme-feature theme))) 1052 (let ((feature (custom-make-theme-feature theme)))
1052 ;; It is better not to use backquote in this file, 1053 ;; It is better not to use backquote in this file,
1053 ;; because that makes a bootstrapping problem 1054 ;; because that makes a bootstrapping problem
diff --git a/lisp/emacs-lisp/byte-run.el b/lisp/emacs-lisp/byte-run.el
index dc7166bc2ea..7de3396f8ed 100644
--- a/lisp/emacs-lisp/byte-run.el
+++ b/lisp/emacs-lisp/byte-run.el
@@ -96,7 +96,7 @@ The return value of this function is not used."
96;; This has a special byte-hunk-handler in bytecomp.el. 96;; This has a special byte-hunk-handler in bytecomp.el.
97(defmacro defsubst (name arglist &rest body) 97(defmacro defsubst (name arglist &rest body)
98 "Define an inline function. The syntax is just like that of `defun'." 98 "Define an inline function. The syntax is just like that of `defun'."
99 (declare (debug defun)) 99 (declare (debug defun) (doc-string 3))
100 (or (memq (get name 'byte-optimizer) 100 (or (memq (get name 'byte-optimizer)
101 '(nil byte-compile-inline-expand)) 101 '(nil byte-compile-inline-expand))
102 (error "`%s' is a primitive" name)) 102 (error "`%s' is a primitive" name))
diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el
index d16b98630c8..a9380619e6a 100644
--- a/lisp/emacs-lisp/cl-loaddefs.el
+++ b/lisp/emacs-lisp/cl-loaddefs.el
@@ -286,7 +286,7 @@ This also does some trivial optimizations to make the form prettier.
286;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist 286;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist
287;;;;;; do* do loop return-from return block etypecase typecase ecase 287;;;;;; do* do loop return-from return block etypecase typecase ecase
288;;;;;; case load-time-value eval-when destructuring-bind function* 288;;;;;; case load-time-value eval-when destructuring-bind function*
289;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "ed94b3ba46080516e6ada69bdf617be5") 289;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "c383ef0fa5f6d28796cd8e9cf65e1c5d")
290;;; Generated autoloads from cl-macs.el 290;;; Generated autoloads from cl-macs.el
291 291
292(autoload 'gensym "cl-macs" "\ 292(autoload 'gensym "cl-macs" "\
@@ -308,6 +308,10 @@ and BODY is implicitly surrounded by (block NAME ...).
308 308
309\(fn NAME ARGLIST [DOCSTRING] BODY...)" nil (quote macro)) 309\(fn NAME ARGLIST [DOCSTRING] BODY...)" nil (quote macro))
310 310
311(put 'defun* 'lisp-indent-function '2)
312
313(put 'defun* 'doc-string-elt '3)
314
311(autoload 'defmacro* "cl-macs" "\ 315(autoload 'defmacro* "cl-macs" "\
312Define NAME as a macro. 316Define NAME as a macro.
313Like normal `defmacro', except ARGLIST allows full Common Lisp conventions, 317Like normal `defmacro', except ARGLIST allows full Common Lisp conventions,
@@ -315,6 +319,10 @@ and BODY is implicitly surrounded by (block NAME ...).
315 319
316\(fn NAME ARGLIST [DOCSTRING] BODY...)" nil (quote macro)) 320\(fn NAME ARGLIST [DOCSTRING] BODY...)" nil (quote macro))
317 321
322(put 'defmacro* 'lisp-indent-function '2)
323
324(put 'defmacro* 'doc-string-elt '3)
325
318(autoload 'function* "cl-macs" "\ 326(autoload 'function* "cl-macs" "\
319Introduce a function. 327Introduce a function.
320Like normal `function', except that if argument is a lambda form, 328Like normal `function', except that if argument is a lambda form,
@@ -327,6 +335,8 @@ its argument list allows full Common Lisp conventions.
327 335
328\(fn ARGS EXPR &rest BODY)" nil (quote macro)) 336\(fn ARGS EXPR &rest BODY)" nil (quote macro))
329 337
338(put 'destructuring-bind 'lisp-indent-function '2)
339
330(autoload 'eval-when "cl-macs" "\ 340(autoload 'eval-when "cl-macs" "\
331Control when BODY is evaluated. 341Control when BODY is evaluated.
332If `compile' is in WHEN, BODY is evaluated when compiled at top-level. 342If `compile' is in WHEN, BODY is evaluated when compiled at top-level.
@@ -335,6 +345,8 @@ If `eval' is in WHEN, BODY is evaluated when interpreted or at non-top-level.
335 345
336\(fn (WHEN...) BODY...)" nil (quote macro)) 346\(fn (WHEN...) BODY...)" nil (quote macro))
337 347
348(put 'eval-when 'lisp-indent-function '1)
349
338(autoload 'load-time-value "cl-macs" "\ 350(autoload 'load-time-value "cl-macs" "\
339Like `progn', but evaluates the body at load time. 351Like `progn', but evaluates the body at load time.
340The result of the body appears to the compiler as a quoted constant. 352The result of the body appears to the compiler as a quoted constant.
@@ -352,12 +364,16 @@ Key values are compared by `eql'.
352 364
353\(fn EXPR (KEYLIST BODY...)...)" nil (quote macro)) 365\(fn EXPR (KEYLIST BODY...)...)" nil (quote macro))
354 366
367(put 'case 'lisp-indent-function '1)
368
355(autoload 'ecase "cl-macs" "\ 369(autoload 'ecase "cl-macs" "\
356Like `case', but error if no case fits. 370Like `case', but error if no case fits.
357`otherwise'-clauses are not allowed. 371`otherwise'-clauses are not allowed.
358 372
359\(fn EXPR (KEYLIST BODY...)...)" nil (quote macro)) 373\(fn EXPR (KEYLIST BODY...)...)" nil (quote macro))
360 374
375(put 'ecase 'lisp-indent-function '1)
376
361(autoload 'typecase "cl-macs" "\ 377(autoload 'typecase "cl-macs" "\
362Evals EXPR, chooses among clauses on that value. 378Evals EXPR, chooses among clauses on that value.
363Each clause looks like (TYPE BODY...). EXPR is evaluated and, if it 379Each clause looks like (TYPE BODY...). EXPR is evaluated and, if it
@@ -367,12 +383,16 @@ final clause, and matches if no other keys match.
367 383
368\(fn EXPR (TYPE BODY...)...)" nil (quote macro)) 384\(fn EXPR (TYPE BODY...)...)" nil (quote macro))
369 385
386(put 'typecase 'lisp-indent-function '1)
387
370(autoload 'etypecase "cl-macs" "\ 388(autoload 'etypecase "cl-macs" "\
371Like `typecase', but error if no case fits. 389Like `typecase', but error if no case fits.
372`otherwise'-clauses are not allowed. 390`otherwise'-clauses are not allowed.
373 391
374\(fn EXPR (TYPE BODY...)...)" nil (quote macro)) 392\(fn EXPR (TYPE BODY...)...)" nil (quote macro))
375 393
394(put 'etypecase 'lisp-indent-function '1)
395
376(autoload 'block "cl-macs" "\ 396(autoload 'block "cl-macs" "\
377Define a lexically-scoped block named NAME. 397Define a lexically-scoped block named NAME.
378NAME may be any symbol. Code inside the BODY forms can call `return-from' 398NAME may be any symbol. Code inside the BODY forms can call `return-from'
@@ -385,6 +405,8 @@ called from BODY.
385 405
386\(fn NAME &rest BODY)" nil (quote macro)) 406\(fn NAME &rest BODY)" nil (quote macro))
387 407
408(put 'block 'lisp-indent-function '1)
409
388(autoload 'return "cl-macs" "\ 410(autoload 'return "cl-macs" "\
389Return from the block named nil. 411Return from the block named nil.
390This is equivalent to `(return-from nil RESULT)'. 412This is equivalent to `(return-from nil RESULT)'.
@@ -400,6 +422,8 @@ This is compatible with Common Lisp, but note that `defun' and
400 422
401\(fn NAME &optional RESULT)" nil (quote macro)) 423\(fn NAME &optional RESULT)" nil (quote macro))
402 424
425(put 'return-from 'lisp-indent-function '1)
426
403(autoload 'loop "cl-macs" "\ 427(autoload 'loop "cl-macs" "\
404The Common Lisp `loop' macro. 428The Common Lisp `loop' macro.
405Valid clauses are: 429Valid clauses are:
@@ -421,11 +445,15 @@ The Common Lisp `do' loop.
421 445
422\(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)" nil (quote macro)) 446\(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)" nil (quote macro))
423 447
448(put 'do 'lisp-indent-function '2)
449
424(autoload 'do* "cl-macs" "\ 450(autoload 'do* "cl-macs" "\
425The Common Lisp `do*' loop. 451The Common Lisp `do*' loop.
426 452
427\(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)" nil (quote macro)) 453\(fn ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)" nil (quote macro))
428 454
455(put 'do* 'lisp-indent-function '2)
456
429(autoload 'dolist "cl-macs" "\ 457(autoload 'dolist "cl-macs" "\
430Loop over a list. 458Loop over a list.
431Evaluate BODY with VAR bound to each `car' from LIST, in turn. 459Evaluate BODY with VAR bound to each `car' from LIST, in turn.
@@ -449,11 +477,15 @@ from OBARRAY.
449 477
450\(fn (VAR [OBARRAY [RESULT]]) BODY...)" nil (quote macro)) 478\(fn (VAR [OBARRAY [RESULT]]) BODY...)" nil (quote macro))
451 479
480(put 'do-symbols 'lisp-indent-function '1)
481
452(autoload 'do-all-symbols "cl-macs" "\ 482(autoload 'do-all-symbols "cl-macs" "\
453 483
454 484
455\(fn SPEC &rest BODY)" nil (quote macro)) 485\(fn SPEC &rest BODY)" nil (quote macro))
456 486
487(put 'do-all-symbols 'lisp-indent-function '1)
488
457(autoload 'psetq "cl-macs" "\ 489(autoload 'psetq "cl-macs" "\
458Set SYMs to the values VALs in parallel. 490Set SYMs to the values VALs in parallel.
459This is like `setq', except that all VAL forms are evaluated (in order) 491This is like `setq', except that all VAL forms are evaluated (in order)
@@ -471,6 +503,8 @@ a `let' form, except that the list of symbols can be computed at run-time.
471 503
472\(fn SYMBOLS VALUES &rest BODY)" nil (quote macro)) 504\(fn SYMBOLS VALUES &rest BODY)" nil (quote macro))
473 505
506(put 'progv 'lisp-indent-function '2)
507
474(autoload 'flet "cl-macs" "\ 508(autoload 'flet "cl-macs" "\
475Make temporary function definitions. 509Make temporary function definitions.
476This is an analogue of `let' that operates on the function cell of FUNC 510This is an analogue of `let' that operates on the function cell of FUNC
@@ -480,6 +514,8 @@ go back to their previous definitions, or lack thereof).
480 514
481\(fn ((FUNC ARGLIST BODY...) ...) FORM...)" nil (quote macro)) 515\(fn ((FUNC ARGLIST BODY...) ...) FORM...)" nil (quote macro))
482 516
517(put 'flet 'lisp-indent-function '1)
518
483(autoload 'labels "cl-macs" "\ 519(autoload 'labels "cl-macs" "\
484Make temporary function bindings. 520Make temporary function bindings.
485This is like `flet', except the bindings are lexical instead of dynamic. 521This is like `flet', except the bindings are lexical instead of dynamic.
@@ -487,12 +523,16 @@ Unlike `flet', this macro is fully compliant with the Common Lisp standard.
487 523
488\(fn ((FUNC ARGLIST BODY...) ...) FORM...)" nil (quote macro)) 524\(fn ((FUNC ARGLIST BODY...) ...) FORM...)" nil (quote macro))
489 525
526(put 'labels 'lisp-indent-function '1)
527
490(autoload 'macrolet "cl-macs" "\ 528(autoload 'macrolet "cl-macs" "\
491Make temporary macro definitions. 529Make temporary macro definitions.
492This is like `flet', but for macros instead of functions. 530This is like `flet', but for macros instead of functions.
493 531
494\(fn ((NAME ARGLIST BODY...) ...) FORM...)" nil (quote macro)) 532\(fn ((NAME ARGLIST BODY...) ...) FORM...)" nil (quote macro))
495 533
534(put 'macrolet 'lisp-indent-function '1)
535
496(autoload 'symbol-macrolet "cl-macs" "\ 536(autoload 'symbol-macrolet "cl-macs" "\
497Make symbol macro definitions. 537Make symbol macro definitions.
498Within the body FORMs, references to the variable NAME will be replaced 538Within the body FORMs, references to the variable NAME will be replaced
@@ -500,6 +540,8 @@ by EXPANSION, and (setq NAME ...) will act like (setf EXPANSION ...).
500 540
501\(fn ((NAME EXPANSION) ...) FORM...)" nil (quote macro)) 541\(fn ((NAME EXPANSION) ...) FORM...)" nil (quote macro))
502 542
543(put 'symbol-macrolet 'lisp-indent-function '1)
544
503(autoload 'lexical-let "cl-macs" "\ 545(autoload 'lexical-let "cl-macs" "\
504Like `let', but lexically scoped. 546Like `let', but lexically scoped.
505The main visible difference is that lambdas inside BODY will create 547The main visible difference is that lambdas inside BODY will create
@@ -507,6 +549,8 @@ lexical closures as in Common Lisp.
507 549
508\(fn BINDINGS BODY)" nil (quote macro)) 550\(fn BINDINGS BODY)" nil (quote macro))
509 551
552(put 'lexical-let 'lisp-indent-function '1)
553
510(autoload 'lexical-let* "cl-macs" "\ 554(autoload 'lexical-let* "cl-macs" "\
511Like `let*', but lexically scoped. 555Like `let*', but lexically scoped.
512The main visible difference is that lambdas inside BODY, and in 556The main visible difference is that lambdas inside BODY, and in
@@ -516,6 +560,8 @@ Common Lisp.
516 560
517\(fn BINDINGS BODY)" nil (quote macro)) 561\(fn BINDINGS BODY)" nil (quote macro))
518 562
563(put 'lexical-let* 'lisp-indent-function '1)
564
519(autoload 'multiple-value-bind "cl-macs" "\ 565(autoload 'multiple-value-bind "cl-macs" "\
520Collect multiple return values. 566Collect multiple return values.
521FORM must return a list; the BODY is then executed with the first N elements 567FORM must return a list; the BODY is then executed with the first N elements
@@ -526,6 +572,8 @@ a synonym for (list A B C).
526 572
527\(fn (SYM...) FORM BODY)" nil (quote macro)) 573\(fn (SYM...) FORM BODY)" nil (quote macro))
528 574
575(put 'multiple-value-bind 'lisp-indent-function '2)
576
529(autoload 'multiple-value-setq "cl-macs" "\ 577(autoload 'multiple-value-setq "cl-macs" "\
530Collect multiple return values. 578Collect multiple return values.
531FORM must return a list; the first N elements of this list are stored in 579FORM must return a list; the first N elements of this list are stored in
@@ -535,6 +583,8 @@ values. For compatibility, (values A B C) is a synonym for (list A B C).
535 583
536\(fn (SYM...) FORM)" nil (quote macro)) 584\(fn (SYM...) FORM)" nil (quote macro))
537 585
586(put 'multiple-value-setq 'lisp-indent-function '1)
587
538(autoload 'locally "cl-macs" "\ 588(autoload 'locally "cl-macs" "\
539 589
540 590
@@ -545,6 +595,8 @@ values. For compatibility, (values A B C) is a synonym for (list A B C).
545 595
546\(fn TYPE FORM)" nil (quote macro)) 596\(fn TYPE FORM)" nil (quote macro))
547 597
598(put 'the 'lisp-indent-function '1)
599
548(autoload 'declare "cl-macs" "\ 600(autoload 'declare "cl-macs" "\
549Declare SPECS about the current function while compiling. 601Declare SPECS about the current function while compiling.
550For instance 602For instance
@@ -649,6 +701,8 @@ the PLACE is not modified before executing BODY.
649 701
650\(fn ((PLACE VALUE) ...) BODY...)" nil (quote macro)) 702\(fn ((PLACE VALUE) ...) BODY...)" nil (quote macro))
651 703
704(put 'letf 'lisp-indent-function '1)
705
652(autoload 'letf* "cl-macs" "\ 706(autoload 'letf* "cl-macs" "\
653Temporarily bind to PLACEs. 707Temporarily bind to PLACEs.
654This is the analogue of `let*', but with generalized variables (in the 708This is the analogue of `let*', but with generalized variables (in the
@@ -661,6 +715,8 @@ the PLACE is not modified before executing BODY.
661 715
662\(fn ((PLACE VALUE) ...) BODY...)" nil (quote macro)) 716\(fn ((PLACE VALUE) ...) BODY...)" nil (quote macro))
663 717
718(put 'letf* 'lisp-indent-function '1)
719
664(autoload 'callf "cl-macs" "\ 720(autoload 'callf "cl-macs" "\
665Set PLACE to (FUNC PLACE ARGS...). 721Set PLACE to (FUNC PLACE ARGS...).
666FUNC should be an unquoted function name. PLACE may be a symbol, 722FUNC should be an unquoted function name. PLACE may be a symbol,
@@ -668,12 +724,16 @@ or any generalized variable allowed by `setf'.
668 724
669\(fn FUNC PLACE ARGS...)" nil (quote macro)) 725\(fn FUNC PLACE ARGS...)" nil (quote macro))
670 726
727(put 'callf 'lisp-indent-function '2)
728
671(autoload 'callf2 "cl-macs" "\ 729(autoload 'callf2 "cl-macs" "\
672Set PLACE to (FUNC ARG1 PLACE ARGS...). 730Set PLACE to (FUNC ARG1 PLACE ARGS...).
673Like `callf', but PLACE is the second argument of FUNC, not the first. 731Like `callf', but PLACE is the second argument of FUNC, not the first.
674 732
675\(fn FUNC ARG1 PLACE ARGS...)" nil (quote macro)) 733\(fn FUNC ARG1 PLACE ARGS...)" nil (quote macro))
676 734
735(put 'callf2 'lisp-indent-function '3)
736
677(autoload 'define-modify-macro "cl-macs" "\ 737(autoload 'define-modify-macro "cl-macs" "\
678Define a `setf'-like modify macro. 738Define a `setf'-like modify macro.
679If NAME is called, it combines its PLACE argument with the other arguments 739If NAME is called, it combines its PLACE argument with the other arguments
@@ -699,6 +759,8 @@ value, that slot cannot be set via `setf'.
699 759
700\(fn NAME SLOTS...)" nil (quote macro)) 760\(fn NAME SLOTS...)" nil (quote macro))
701 761
762(put 'defstruct 'doc-string-elt '2)
763
702(autoload 'cl-struct-setf-expander "cl-macs" "\ 764(autoload 'cl-struct-setf-expander "cl-macs" "\
703 765
704 766
@@ -710,6 +772,8 @@ The type name can then be used in `typecase', `check-type', etc.
710 772
711\(fn NAME ARGLIST &rest BODY)" nil (quote macro)) 773\(fn NAME ARGLIST &rest BODY)" nil (quote macro))
712 774
775(put 'deftype 'doc-string-elt '3)
776
713(autoload 'typep "cl-macs" "\ 777(autoload 'typep "cl-macs" "\
714Check that OBJECT is of type TYPE. 778Check that OBJECT is of type TYPE.
715TYPE is a Common Lisp-style type specifier. 779TYPE is a Common Lisp-style type specifier.
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 441ae55758c..c547a4f6460 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -227,6 +227,7 @@ and BODY is implicitly surrounded by (block NAME ...).
227 cl-declarations-or-string 227 cl-declarations-or-string
228 [&optional ("interactive" interactive)] 228 [&optional ("interactive" interactive)]
229 def-body)) 229 def-body))
230 (doc-string 3)
230 (indent 2)) 231 (indent 2))
231 (let* ((res (cl-transform-lambda (cons args body) name)) 232 (let* ((res (cl-transform-lambda (cons args body) name))
232 (form (list* 'defun name (cdr res)))) 233 (form (list* 'defun name (cdr res))))
@@ -279,6 +280,7 @@ and BODY is implicitly surrounded by (block NAME ...).
279\(fn NAME ARGLIST [DOCSTRING] BODY...)" 280\(fn NAME ARGLIST [DOCSTRING] BODY...)"
280 (declare (debug 281 (declare (debug
281 (&define name cl-macro-list cl-declarations-or-string def-body)) 282 (&define name cl-macro-list cl-declarations-or-string def-body))
283 (doc-string 3)
282 (indent 2)) 284 (indent 2))
283 (let* ((res (cl-transform-lambda (cons args body) name)) 285 (let* ((res (cl-transform-lambda (cons args body) name))
284 (form (list* 'defmacro name (cdr res)))) 286 (form (list* 'defmacro name (cdr res))))
@@ -2587,7 +2589,8 @@ one keyword is supported, `:read-only'. If this has a non-nil
2587value, that slot cannot be set via `setf'. 2589value, that slot cannot be set via `setf'.
2588 2590
2589\(fn NAME SLOTS...)" 2591\(fn NAME SLOTS...)"
2590 (declare (debug 2592 (declare (doc-string 2)
2593 (debug
2591 (&define ;Makes top-level form not be wrapped. 2594 (&define ;Makes top-level form not be wrapped.
2592 [&or symbolp 2595 [&or symbolp
2593 (gate 2596 (gate
@@ -2854,7 +2857,7 @@ value, that slot cannot be set via `setf'.
2854(defmacro deftype (name arglist &rest body) 2857(defmacro deftype (name arglist &rest body)
2855 "Define NAME as a new data type. 2858 "Define NAME as a new data type.
2856The type name can then be used in `typecase', `check-type', etc." 2859The type name can then be used in `typecase', `check-type', etc."
2857 (declare (debug defmacro*)) 2860 (declare (debug defmacro*) (doc-string 3))
2858 (list 'eval-when '(compile load eval) 2861 (list 'eval-when '(compile load eval)
2859 (cl-transform-function-property 2862 (cl-transform-function-property
2860 name 'cl-deftype-handler (cons (list* '&cl-defs ''('*) arglist) body)))) 2863 name 'cl-deftype-handler (cons (list* '&cl-defs ''('*) arglist) body))))
diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el
index 7c486e17dcf..137dd1bfb84 100644
--- a/lisp/emacs-lisp/cl.el
+++ b/lisp/emacs-lisp/cl.el
@@ -656,6 +656,15 @@ If ALIST is non-nil, the new pairs are prepended to it."
656(fmakunbound 'dolist) 656(fmakunbound 'dolist)
657(fmakunbound 'dotimes) 657(fmakunbound 'dotimes)
658(fmakunbound 'declare) 658(fmakunbound 'declare)
659;;;###autoload
660(progn
661 ;; Autoload, so autoload.el and font-lock can use it even when CL
662 ;; is not loaded.
663 (put 'defun* 'doc-string-elt 3)
664 (put 'defmacro* 'doc-string-elt 3)
665 (put 'defsubst 'doc-string-elt 3)
666 (put 'defstruct 'doc-string-elt 2))
667
659(load "cl-loaddefs" nil 'quiet) 668(load "cl-loaddefs" nil 'quiet)
660 669
661;; This goes here so that cl-macs can find it if it loads right now. 670;; This goes here so that cl-macs can find it if it loads right now.
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index 301947f0735..a11f213e646 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -142,7 +142,8 @@ For example, you could write
142 (define-minor-mode foo-mode \"If enabled, foo on you!\" 142 (define-minor-mode foo-mode \"If enabled, foo on you!\"
143 :lighter \" Foo\" :require 'foo :global t :group 'hassle :version \"27.5\" 143 :lighter \" Foo\" :require 'foo :global t :group 'hassle :version \"27.5\"
144 ...BODY CODE...)" 144 ...BODY CODE...)"
145 (declare (debug (&define name stringp 145 (declare (doc-string 2)
146 (debug (&define name stringp
146 [&optional [&not keywordp] sexp 147 [&optional [&not keywordp] sexp
147 &optional [&not keywordp] sexp 148 &optional [&not keywordp] sexp
148 &optional [&not keywordp] sexp] 149 &optional [&not keywordp] sexp]
@@ -335,7 +336,7 @@ enabled, then disabling and reenabling MODE should make MODE work
335correctly with the current major mode. This is important to 336correctly with the current major mode. This is important to
336prevent problems with derived modes, that is, major modes that 337prevent problems with derived modes, that is, major modes that
337call another major mode in their body." 338call another major mode in their body."
338 339 (declare (doc-string 2))
339 (let* ((global-mode-name (symbol-name global-mode)) 340 (let* ((global-mode-name (symbol-name global-mode))
340 (pretty-name (easy-mmode-pretty-mode-name mode)) 341 (pretty-name (easy-mmode-pretty-mode-name mode))
341 (pretty-global-name (easy-mmode-pretty-mode-name global-mode)) 342 (pretty-global-name (easy-mmode-pretty-mode-name global-mode))
diff --git a/lisp/emacs-lisp/generic.el b/lisp/emacs-lisp/generic.el
index b9db092fafc..80b6122822e 100644
--- a/lisp/emacs-lisp/generic.el
+++ b/lisp/emacs-lisp/generic.el
@@ -151,7 +151,8 @@ mode hook `MODE-hook'.
151See the file generic-x.el for some examples of `define-generic-mode'." 151See the file generic-x.el for some examples of `define-generic-mode'."
152 (declare (debug (sexp def-form def-form def-form form def-form 152 (declare (debug (sexp def-form def-form def-form form def-form
153 [&optional stringp] &rest [keywordp form])) 153 [&optional stringp] &rest [keywordp form]))
154 (indent 1)) 154 (indent 1)
155 (doc-string 7))
155 156
156 ;; Backward compatibility. 157 ;; Backward compatibility.
157 (when (eq (car-safe mode) 'quote) 158 (when (eq (car-safe mode) 'quote)
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 95eb8c963be..dfdac92ae32 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -136,34 +136,14 @@ It has `lisp-mode-abbrev-table' as its parent."
136;; This was originally in autoload.el and is still used there. 136;; This was originally in autoload.el and is still used there.
137(put 'autoload 'doc-string-elt 3) 137(put 'autoload 'doc-string-elt 3)
138(put 'defun 'doc-string-elt 3) 138(put 'defun 'doc-string-elt 3)
139(put 'defun* 'doc-string-elt 3)
140(put 'defmethod 'doc-string-elt 3) 139(put 'defmethod 'doc-string-elt 3)
141(put 'defvar 'doc-string-elt 3) 140(put 'defvar 'doc-string-elt 3)
142(put 'defcustom 'doc-string-elt 3)
143(put 'deftheme 'doc-string-elt 2)
144(put 'deftype 'doc-string-elt 3)
145(put 'defconst 'doc-string-elt 3) 141(put 'defconst 'doc-string-elt 3)
146(put 'defmacro 'doc-string-elt 3) 142(put 'defmacro 'doc-string-elt 3)
147(put 'defmacro* 'doc-string-elt 3)
148(put 'defsubst 'doc-string-elt 3)
149(put 'defstruct 'doc-string-elt 2)
150(put 'define-skeleton 'doc-string-elt 2)
151(put 'define-derived-mode 'doc-string-elt 4)
152(put 'define-compilation-mode 'doc-string-elt 3)
153(put 'easy-mmode-define-minor-mode 'doc-string-elt 2)
154(put 'define-minor-mode 'doc-string-elt 2)
155(put 'easy-mmode-define-global-mode 'doc-string-elt 2)
156(put 'define-global-minor-mode 'doc-string-elt 2)
157(put 'define-globalized-minor-mode 'doc-string-elt 2)
158(put 'define-generic-mode 'doc-string-elt 7)
159(put 'define-ibuffer-filter 'doc-string-elt 2)
160(put 'define-ibuffer-op 'doc-string-elt 3)
161(put 'define-ibuffer-sorter 'doc-string-elt 2)
162(put 'lambda 'doc-string-elt 2) 143(put 'lambda 'doc-string-elt 2)
163(put 'defalias 'doc-string-elt 3) 144(put 'defalias 'doc-string-elt 3)
164(put 'defvaralias 'doc-string-elt 3) 145(put 'defvaralias 'doc-string-elt 3)
165(put 'define-category 'doc-string-elt 2) 146(put 'define-category 'doc-string-elt 2)
166(put 'define-overloadable-function 'doc-string-elt 3)
167 147
168(defvar lisp-doc-string-elt-property 'doc-string-elt 148(defvar lisp-doc-string-elt-property 'doc-string-elt
169 "The symbol property that holds the docstring position info.") 149 "The symbol property that holds the docstring position info.")
diff --git a/lisp/ibuf-macs.el b/lisp/ibuf-macs.el
index f47592e82bb..659b8e7d78c 100644
--- a/lisp/ibuf-macs.el
+++ b/lisp/ibuf-macs.el
@@ -143,7 +143,7 @@ buffer object, and `b' bound to another. BODY should return a non-nil
143value if and only if `a' is \"less than\" `b'. 143value if and only if `a' is \"less than\" `b'.
144 144
145\(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)" 145\(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)"
146 (declare (indent 1)) 146 (declare (indent 1) (doc-string 2))
147 `(progn 147 `(progn
148 (defun ,(intern (concat "ibuffer-do-sort-by-" (symbol-name name))) () 148 (defun ,(intern (concat "ibuffer-do-sort-by-" (symbol-name name))) ()
149 ,(or documentation "No :documentation specified for this sorting method.") 149 ,(or documentation "No :documentation specified for this sorting method.")
@@ -202,7 +202,7 @@ COMPLEX means this function is special; see the source code of this
202macro for exactly what it does. 202macro for exactly what it does.
203 203
204\(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING ACTIVE-OPSTRING COMPLEX) &rest BODY)" 204\(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING ACTIVE-OPSTRING COMPLEX) &rest BODY)"
205 (declare (indent 2)) 205 (declare (indent 2) (doc-string 3))
206 `(progn 206 `(progn
207 (defun ,(intern (concat (if (string-match "^ibuffer-do" (symbol-name op)) 207 (defun ,(intern (concat (if (string-match "^ibuffer-do" (symbol-name op))
208 "" "ibuffer-do-") (symbol-name op))) 208 "" "ibuffer-do-") (symbol-name op)))
@@ -280,7 +280,7 @@ will be evaluated with BUF bound to the buffer object, and QUALIFIER
280bound to the current value of the filter. 280bound to the current value of the filter.
281 281
282\(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" 282\(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)"
283 (declare (indent 2)) 283 (declare (indent 2) (doc-string 2))
284 (let ((fn-name (intern (concat "ibuffer-filter-by-" (symbol-name name))))) 284 (let ((fn-name (intern (concat "ibuffer-filter-by-" (symbol-name name)))))
285 `(progn 285 `(progn
286 (defun ,fn-name (qualifier) 286 (defun ,fn-name (qualifier)
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 7ffaddb2c49..fe1b63f3048 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1884,6 +1884,9 @@ Runs `compilation-mode-hook' with `run-mode-hooks' (which see).
1884 (setq buffer-read-only t) 1884 (setq buffer-read-only t)
1885 (run-mode-hooks 'compilation-mode-hook)) 1885 (run-mode-hooks 'compilation-mode-hook))
1886 1886
1887;;;###autoload
1888(put 'define-compilation-mode 'doc-string-elt 3)
1889
1887(defmacro define-compilation-mode (mode name doc &rest body) 1890(defmacro define-compilation-mode (mode name doc &rest body)
1888 "This is like `define-derived-mode' without the PARENT argument. 1891 "This is like `define-derived-mode' without the PARENT argument.
1889The parent is always `compilation-mode' and the customizable `compilation-...' 1892The parent is always `compilation-mode' and the customizable `compilation-...'
diff --git a/lisp/skeleton.el b/lisp/skeleton.el
index 328f795ecd2..34d69a74369 100644
--- a/lisp/skeleton.el
+++ b/lisp/skeleton.el
@@ -121,7 +121,7 @@ are integer buffer positions in the reverse order of the insertion order.")
121 "Define a user-configurable COMMAND that enters a statement skeleton. 121 "Define a user-configurable COMMAND that enters a statement skeleton.
122DOCUMENTATION is that of the command. 122DOCUMENTATION is that of the command.
123SKELETON is as defined under `skeleton-insert'." 123SKELETON is as defined under `skeleton-insert'."
124 (declare (debug (&define name stringp skeleton-edebug-spec))) 124 (declare (doc-string 2) (debug (&define name stringp skeleton-edebug-spec)))
125 (if skeleton-debug 125 (if skeleton-debug
126 (set command skeleton)) 126 (set command skeleton))
127 `(progn 127 `(progn