annotate lisp/emacs-lisp/checkdoc.el @ 69713:75b06a7624a1

* images/README: Update with following information. * images/data-save.xpm, images/mail/flag-for-followup.xpm: * images/zoom-in.xpm, images/zoom-out.xpm: New images from GNOME 2.12. * images/contact.pbm, images/data-save.pbm, images/delete.pbm: * images/mail/flag-for-followup.pbm, images/mail/inbox.pbm: * images/mail/move.pbm, images/next-page.pbm, images/zoom-out.pbm: New bitmaps for new images. * images/refresh.xpm, images/sort-ascending.xpm, * images/sort-descending.xpm: Update with GTK 2.x images. Note that the default GTK icons are not overridden by the GNOME theme due to a bug which was fixed in GNOME 2.15. Once GNOME 2.16 is in wide circulation, then the GTK icons should be replaced with the equivalent GNOME icons. Until then, we should be consistent with GTK first, then GNOME. * images/mail/repack.xpm, images/mail/reply-from.xpm: * images/mail/reply-to.xpm, images/search-replace.xpm: * images/separator.xpm, images/show.xpm: Update custom icons to be closer to their GNOME counterparts. * images/attach.pbm, images/exit.pbm, images/mail/compose.pbm: * images/mail/repack.pbm, images/mail/reply-all.pbm: * images/mail/reply-from.pbm, images/mail/reply-to.pbm: * images/mail/reply.pbm, images/mail/send.pbm, images/show.pbm: * images/search-replace.pbm: Update bitmaps. * images/execute.pbm, images/execute.xpm, images/fld-open.pbm: * images/fld-open.xpm, images/highlight.pbm, images/highlight.xpm: * images/mail.pbm, images/mail.xpm, images/mail/alias.pbm: * images/mail/alias.xpm, images/mail/refile.pbm: * images/mail/refile.xpm, images/page-down.pbm, images/page-down.xpm: * images/widen.pbm, images/widen.xpm: Remove custom MH-E icons since MH-E is now using the equivalent GTK/GNOME icons.
author Bill Wohler <wohler@newt.com>
date Tue, 28 Mar 2006 19:15:30 +0000
parents 067115a6e738
children 56fd2cceac24 c5406394f567
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38436
b174db545cfd Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 37426
diff changeset
1 ;;; checkdoc.el --- check documentation strings for style requirements
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2
64751
5b1a238fcbb4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64379
diff changeset
3 ;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004,
68648
067115a6e738 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 65680
diff changeset
4 ;; 2005, 2006 Free Software Foundation, Inc.
21181
2b9774c50f91 Updated to 0.4.3:
Eric M. Ludlam <zappo@gnu.org>
parents: 20953
diff changeset
5
20603
24dda0afd915 Added some more comments in the commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 20085
diff changeset
6 ;; Author: Eric M. Ludlam <zappo@gnu.org>
23192
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
7 ;; Version: 0.6.2
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
8 ;; Keywords: docs, maint, lisp
21181
2b9774c50f91 Updated to 0.4.3:
Eric M. Ludlam <zappo@gnu.org>
parents: 20953
diff changeset
9
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
21181
2b9774c50f91 Updated to 0.4.3:
Eric M. Ludlam <zappo@gnu.org>
parents: 20953
diff changeset
11
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
12 ;; GNU Emacs is free software; you can redistribute it and/or modify
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
13 ;; it under the terms of the GNU General Public License as published by
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
14 ;; the Free Software Foundation; either version 2, or (at your option)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
15 ;; any later version.
21181
2b9774c50f91 Updated to 0.4.3:
Eric M. Ludlam <zappo@gnu.org>
parents: 20953
diff changeset
16
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
17 ;; GNU Emacs is distributed in the hope that it will be useful,
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
20 ;; GNU General Public License for more details.
21181
2b9774c50f91 Updated to 0.4.3:
Eric M. Ludlam <zappo@gnu.org>
parents: 20953
diff changeset
21
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
22 ;; You should have received a copy of the GNU General Public License
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64085
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 58899
diff changeset
24 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 58899
diff changeset
25 ;; Boston, MA 02110-1301, USA.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
26
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
27 ;;; Commentary:
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
28 ;;
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
29 ;; The Emacs Lisp manual has a nice chapter on how to write
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
30 ;; documentation strings. Many stylistic suggestions are fairly
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
31 ;; deterministic and easy to check for syntactically, but also easy
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
32 ;; to forget. The main checkdoc engine will perform the stylistic
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
33 ;; checks needed to make sure these styles are remembered.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
34 ;;
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
35 ;; There are two ways to use checkdoc:
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
36 ;; 1) Periodically use `checkdoc' or `checkdoc-current-buffer'.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
37 ;; `checkdoc' is a more interactive version of
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
38 ;; `checkdoc-current-buffer'
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
39 ;; 2) Use `checkdoc-minor-mode' to automatically check your
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
40 ;; documentation whenever you evaluate Lisp code with C-M-x
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
41 ;; or [menu-bar emacs-lisp eval-buffer]. Additional key-bindings
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
42 ;; are also provided under C-c ? KEY
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
43 ;; (require 'checkdoc)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
44 ;; (add-hook 'emacs-lisp-mode-hook
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
45 ;; '(lambda () (checkdoc-minor-mode 1)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
46 ;;
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
47 ;; Using `checkdoc':
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
48 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
49 ;; The commands `checkdoc' and `checkdoc-ispell' are the top-level
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
50 ;; entry points to all of the different checks that are available. It
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
51 ;; breaks examination of your Lisp file into four sections (comments,
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
52 ;; documentation, messages, and spacing) and indicates its current
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
53 ;; state in a status buffer.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
54 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
55 ;; The Comments check examines your headers, footers, and
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
56 ;; various tags (such as "Code:") to make sure that your code is ready
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
57 ;; for easy integration into existing systems.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
58 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
59 ;; The Documentation check deals with documentation strings
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
60 ;; and their elements that help make Emacs easier to use.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
61 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
62 ;; The Messages check ensures that the strings displayed in the
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
63 ;; minibuffer by some commands (such as `error' and `y-or-n-p')
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
64 ;; are consistent with the Emacs environment.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
65 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
66 ;; The Spacing check cleans up white-space at the end of lines.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
67 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
68 ;; The interface while working with documentation and messages is
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
69 ;; slightly different when being run in the interactive mode. The
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
70 ;; interface offers several options, including the ability to skip to
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
71 ;; the next error, or back up to previous errors. Auto-fixing is
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
72 ;; turned off at this stage, but you can use the `f' or `F' key to fix
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
73 ;; a given error (if the fix is available.)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
74 ;;
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
75 ;; Auto-fixing:
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
76 ;;
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
77 ;; There are four classifications of style errors in terms of how
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
78 ;; easy they are to fix. They are simple, complex, really complex,
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
79 ;; and impossible. (Impossible really means that checkdoc does not
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
80 ;; have a fixing routine yet.) Typically white-space errors are
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
81 ;; classified as simple, and are auto-fixed by default. Typographic
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
82 ;; changes are considered complex, and the user is asked if they want
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
83 ;; the problem fixed before checkdoc makes the change. These changes
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
84 ;; can be done without asking if `checkdoc-autofix-flag' is properly
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
85 ;; set. Potentially redundant changes are considered really complex,
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
86 ;; and the user is always asked before a change is inserted. The
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
87 ;; variable `checkdoc-autofix-flag' controls how these types of errors
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
88 ;; are fixed.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
89 ;;
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
90 ;; Spell checking text:
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
91 ;;
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
92 ;; The variable `checkdoc-spellcheck-documentation-flag' can be set
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
93 ;; to customize how spell checking is to be done. Since spell
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
94 ;; checking can be quite slow, you can optimize how best you want your
46841
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
95 ;; checking done. The default is `defun', which spell checks each time
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
96 ;; `checkdoc-defun' or `checkdoc-eval-defun' is used. Setting to nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
97 ;; prevents spell checking during normal usage.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
98 ;; Setting this variable to nil does not mean you cannot take
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
99 ;; advantage of the spell checking. You can instead use the
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
100 ;; interactive functions `checkdoc-ispell-*' to check the spelling of
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
101 ;; your documentation.
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
102 ;; There is a list of Lisp-specific words which checkdoc will
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
103 ;; install into Ispell on the fly, but only if Ispell is not already
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
104 ;; running. Use `ispell-kill-ispell' to make checkdoc restart it with
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
105 ;; these words enabled.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
106 ;;
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
107 ;; Checking parameters:
20603
24dda0afd915 Added some more comments in the commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 20085
diff changeset
108 ;;
22514
dee11277c07d (checkdoc-eval-defun): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 22195
diff changeset
109 ;; You might not always want a function to have its parameters listed
20603
24dda0afd915 Added some more comments in the commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 20085
diff changeset
110 ;; in order. When this is the case, put the following comment just in
24dda0afd915 Added some more comments in the commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 20085
diff changeset
111 ;; front of the documentation string: "; checkdoc-order: nil" This
24dda0afd915 Added some more comments in the commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 20085
diff changeset
112 ;; overrides the value of `checkdoc-arguments-in-order-flag'.
24dda0afd915 Added some more comments in the commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 20085
diff changeset
113 ;;
24dda0afd915 Added some more comments in the commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 20085
diff changeset
114 ;; If you specifically wish to avoid mentioning a parameter of a
24dda0afd915 Added some more comments in the commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 20085
diff changeset
115 ;; function in the doc string (such as a hidden parameter, or a
24dda0afd915 Added some more comments in the commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 20085
diff changeset
116 ;; parameter which is very obvious like events), you can have checkdoc
24dda0afd915 Added some more comments in the commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 20085
diff changeset
117 ;; skip looking for it by putting the following comment just in front
24dda0afd915 Added some more comments in the commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 20085
diff changeset
118 ;; of the documentation string: "; checkdoc-params: (args go here)"
24dda0afd915 Added some more comments in the commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 20085
diff changeset
119 ;;
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
120 ;; Checking message strings:
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
121 ;;
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
122 ;; The text that follows the `error' and `y-or-n-p' commands is
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
123 ;; also checked. The documentation for `error' clearly states some
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
124 ;; simple style rules to follow which checkdoc will auto-fix for you.
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
125 ;; `y-or-n-p' also states that it should end in a space. I added that
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
126 ;; it should end in "? " since that is almost always used.
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
127 ;;
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
128 ;; Adding your own checks:
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
129 ;;
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
130 ;; You can experiment with adding your own checks by setting the
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
131 ;; hooks `checkdoc-style-hooks' and `checkdoc-comment-style-hooks'.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
132 ;; Return a string which is the error you wish to report. The cursor
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
133 ;; position should be preserved.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
134 ;;
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
135 ;; Error errors:
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
136 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
137 ;; Checkdoc does not always flag errors correctly. There are a
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
138 ;; couple ways you can coax your file into passing all of checkdoc's
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
139 ;; tests through buffer local variables.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
140 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
141 ;; The variable `checkdoc-verb-check-experimental-flag' can be used
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
142 ;; to turn off the check for verb-voice in case you use words that are
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
143 ;; not semantically verbs, but are still in the incomplete list.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
144 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
145 ;; The variable `checkdoc-symbol-words' can be a list of words that
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
146 ;; happen to also be symbols. This is not a problem for one-word
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
147 ;; symbols, but if you use a hyphenated word that is also a symbol,
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
148 ;; then you may need this.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
149 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
150 ;; The symbol `checkdoc-force-docstrings-flag' can be set to nil if
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
151 ;; you have many undocumented functions you don't wish to document.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
152 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
153 ;; See the above section "Checking Parameters" for details about
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
154 ;; parameter checking.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
155 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
156 ;; Dependencies:
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
157 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
158 ;; This file requires lisp-mnt (Lisp maintenance routines) for the
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
159 ;; comment checkers.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
160 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
161 ;; Requires custom for Emacs v20.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
162
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
163 ;;; TO DO:
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
164 ;; Hook into the byte compiler on a defun/defvar level to generate
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
165 ;; warnings in the byte-compiler's warning/error buffer.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
166 ;; Better ways to override more typical `eval' functions. Advice
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
167 ;; might be good but hard to turn on/off as a minor mode.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
168 ;;
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
169 ;;; Maybe Do:
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
170 ;; Code sweep checks for "forbidden functions", proper use of hooks,
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
171 ;; proper keybindings, and other items from the manual that are
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
172 ;; not specifically docstring related. Would this even be useful?
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
173
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
174 ;;; Code:
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
175 (defvar checkdoc-version "0.6.1"
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
176 "Release version of checkdoc you are currently running.")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
177
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
178 ;; From custom web page for compatibility between versions of custom:
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
179 (eval-and-compile
41608
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41222
diff changeset
180 (condition-case ()
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41222
diff changeset
181 (require 'custom)
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41222
diff changeset
182 (error nil))
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41222
diff changeset
183 (if (and (featurep 'custom) (fboundp 'custom-declare-variable))
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41222
diff changeset
184 nil ;; We've got what we needed
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41222
diff changeset
185 ;; We have the old custom-library, hack around it!
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41222
diff changeset
186 (defmacro defgroup (&rest args)
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41222
diff changeset
187 nil)
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41222
diff changeset
188 (defmacro custom-add-option (&rest args)
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41222
diff changeset
189 nil)
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41222
diff changeset
190 (defmacro defcustom (var value doc &rest args)
45db352a0971 Converted backquote to the new style.
Sam Steingold <sds@gnu.org>
parents: 41222
diff changeset
191 `(defvar ,var ,value ,doc))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
192
65191
9dda4c47e83d (compilation-error-regexp-alist, compilation-mode-font-lock-keywords):
Juanma Barranquero <lekktu@gmail.com>
parents: 64751
diff changeset
193 (defvar compilation-error-regexp-alist)
9dda4c47e83d (compilation-error-regexp-alist, compilation-mode-font-lock-keywords):
Juanma Barranquero <lekktu@gmail.com>
parents: 64751
diff changeset
194 (defvar compilation-mode-font-lock-keywords)
9dda4c47e83d (compilation-error-regexp-alist, compilation-mode-font-lock-keywords):
Juanma Barranquero <lekktu@gmail.com>
parents: 64751
diff changeset
195
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
196 (defcustom checkdoc-autofix-flag 'semiautomatic
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
197 "*Non-nil means attempt auto-fixing of doc strings.
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
198 If this value is the symbol `query', then the user is queried before
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
199 any change is made. If the value is `automatic', then all changes are
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
200 made without asking unless the change is very-complex. If the value
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
201 is `semiautomatic' or any other value, then simple fixes are made
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
202 without asking, and complex changes are made by asking the user first.
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
203 The value `never' is the same as nil, never ask or change anything."
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
204 :group 'checkdoc
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
205 :type '(choice (const automatic)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
206 (const query)
22579
d0ad271c7774 (checkdoc-autofix-flag): Use `other'
Andreas Schwab <schwab@suse.de>
parents: 22514
diff changeset
207 (const never)
d0ad271c7774 (checkdoc-autofix-flag): Use `other'
Andreas Schwab <schwab@suse.de>
parents: 22514
diff changeset
208 (other :tag "semiautomatic" semiautomatic)))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
209
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
210 (defcustom checkdoc-bouncy-flag t
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
211 "*Non-nil means to \"bounce\" to auto-fix locations.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
212 Setting this to nil will silently make fixes that require no user
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
213 interaction. See `checkdoc-autofix-flag' for auto-fixing details."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
214 :group 'checkdoc
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
215 :type 'boolean)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
216
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
217 (defcustom checkdoc-force-docstrings-flag t
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
218 "*Non-nil means that all checkable definitions should have documentation.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
219 Style guide dictates that interactive functions MUST have documentation,
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
220 and that it's good but not required practice to make non user visible items
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
221 have doc strings."
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
222 :group 'checkdoc
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
223 :type 'boolean)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
224
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
225 (defcustom checkdoc-force-history-flag t
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
226 "*Non-nil means that files should have a History section or ChangeLog file.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
227 This helps document the evolution of, and recent changes to, the package."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
228 :group 'checkdoc
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
229 :type 'boolean)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
230
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
231 (defcustom checkdoc-permit-comma-termination-flag nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
232 "*Non-nil means the first line of a docstring may end with a comma.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
233 Ordinarily, a full sentence is required. This may be misleading when
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
234 there is a substantial caveat to the one-line description -- the comma
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
235 should be used when the first part could stand alone as a sentence, but
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
236 it indicates that a modifying clause follows."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
237 :group 'checkdoc
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
238 :type 'boolean)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
239
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
240 (defcustom checkdoc-spellcheck-documentation-flag nil
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
241 "*Non-nil means run Ispell on text based on value.
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
242 This is automatically set to nil if Ispell does not exist on your
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
243 system. Possible values are:
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
244
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
245 nil - Don't spell-check during basic style checks.
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
246 defun - Spell-check when style checking a single defun
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
247 buffer - Spell-check when style checking the whole buffer
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
248 interactive - Spell-check during any interactive check.
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
249 t - Always spell-check"
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
250 :group 'checkdoc
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
251 :type '(choice (const nil)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
252 (const defun)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
253 (const buffer)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
254 (const interactive)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
255 (const t)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
256
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
257 (defvar checkdoc-ispell-lisp-words
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
258 '("alist" "emacs" "etags" "iff" "keymap" "paren" "regexp" "sexp" "xemacs")
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
259 "List of words that are correct when spell-checking Lisp documentation.")
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
260
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
261 (defcustom checkdoc-max-keyref-before-warn 10
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
262 "*The number of \\ [command-to-keystroke] tokens allowed in a doc string.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
263 Any more than this and a warning is generated suggesting that the construct
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
264 \\ {keymap} be used instead."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
265 :group 'checkdoc
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
266 :type 'integer)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
267
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
268 (defcustom checkdoc-arguments-in-order-flag t
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
269 "*Non-nil means warn if arguments appear out of order.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
270 Setting this to nil will mean only checking that all the arguments
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
271 appear in the proper form in the documentation, not that they are in
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
272 the same order as they appear in the argument list. No mention is
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
273 made in the style guide relating to order."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
274 :group 'checkdoc
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
275 :type 'boolean)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
276
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
277 (defvar checkdoc-style-hooks nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
278 "Hooks called after the standard style check is completed.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
279 All hooks must return nil or a string representing the error found.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
280 Useful for adding new user implemented commands.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
281
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
282 Each hook is called with two parameters, (DEFUNINFO ENDPOINT).
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
283 DEFUNINFO is the return value of `checkdoc-defun-info'. ENDPOINT is the
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
284 location of end of the documentation string.")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
285
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
286 (defvar checkdoc-comment-style-hooks nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
287 "Hooks called after the standard comment style check is completed.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
288 Must return nil if no errors are found, or a string describing the
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
289 problem discovered. This is useful for adding additional checks.")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
290
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
291 (defvar checkdoc-diagnostic-buffer "*Style Warnings*"
20603
24dda0afd915 Added some more comments in the commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 20085
diff changeset
292 "Name of warning message buffer.")
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
293
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
294 (defvar checkdoc-defun-regexp
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
295 "^(def\\(un\\|var\\|custom\\|macro\\|const\\|subst\\|advice\\)\
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
296 \\s-+\\(\\(\\sw\\|\\s_\\)+\\)[ \t\n]+"
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
297 "Regular expression used to identify a defun.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
298 A search leaves the cursor in front of the parameter list.")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
299
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
300 (defcustom checkdoc-verb-check-experimental-flag t
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
301 "*Non-nil means to attempt to check the voice of the doc string.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
302 This check keys off some words which are commonly misused. See the
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
303 variable `checkdoc-common-verbs-wrong-voice' if you wish to add your own."
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
304 :group 'checkdoc
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
305 :type 'boolean)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
306
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
307 (defvar checkdoc-generate-compile-warnings-flag nil
46363
bf7784999bbd Fix doc typos.
Richard M. Stallman <rms@gnu.org>
parents: 45897
diff changeset
308 "Non-nil means generate warnings in a buffer for browsing.
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
309 Do not set this by hand, use a function like `checkdoc-current-buffer'
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
310 with a universal argument.")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
311
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
312 (defcustom checkdoc-symbol-words nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
313 "A list of symbols which also happen to make good words.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
314 These symbol-words are ignored when unquoted symbols are searched for.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
315 This should be set in an Emacs Lisp file's local variables."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
316 :group 'checkdoc
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
317 :type '(repeat (symbol :tag "Word")))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
318
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
319 (defvar checkdoc-proper-noun-list
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
320 '("ispell" "xemacs" "emacs" "lisp")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
321 "List of words (not capitalized) which should be capitalized.")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
322
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
323 (defvar checkdoc-proper-noun-regexp
64182
176ffa79bdd8 (checkdoc-proper-noun-list):
Richard M. Stallman <rms@gnu.org>
parents: 64085
diff changeset
324 (let ((expr "\\_<\\(")
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
325 (l checkdoc-proper-noun-list))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
326 (while l
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
327 (setq expr (concat expr (car l) (if (cdr l) "\\|" ""))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
328 l (cdr l)))
64182
176ffa79bdd8 (checkdoc-proper-noun-list):
Richard M. Stallman <rms@gnu.org>
parents: 64085
diff changeset
329 (concat expr "\\)\\_>"))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
330 "Regular expression derived from `checkdoc-proper-noun-regexp'.")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
331
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
332 (defvar checkdoc-common-verbs-regexp nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
333 "Regular expression derived from `checkdoc-common-verbs-regexp'.")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
334
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
335 (defvar checkdoc-common-verbs-wrong-voice
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
336 '(("adds" . "add")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
337 ("allows" . "allow")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
338 ("appends" . "append")
22514
dee11277c07d (checkdoc-eval-defun): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 22195
diff changeset
339 ("applies" . "apply")
dee11277c07d (checkdoc-eval-defun): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 22195
diff changeset
340 ("arranges" . "arrange")
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
341 ("brings" . "bring")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
342 ("calls" . "call")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
343 ("catches" . "catch")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
344 ("changes" . "change")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
345 ("checks" . "check")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
346 ("contains" . "contain")
37162
0b99eb07fc17 (checkdoc-common-verbs-wrong-voice): Add
Gerd Moellmann <gerd@gnu.org>
parents: 33495
diff changeset
347 ("converts" . "convert")
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
348 ("creates" . "create")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
349 ("destroys" . "destroy")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
350 ("disables" . "disable")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
351 ("executes" . "execute")
22514
dee11277c07d (checkdoc-eval-defun): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 22195
diff changeset
352 ("evals" . "evaluate")
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
353 ("evaluates" . "evaluate")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
354 ("finds" . "find")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
355 ("forces" . "force")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
356 ("gathers" . "gather")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
357 ("generates" . "generate")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
358 ("goes" . "go")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
359 ("guesses" . "guess")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
360 ("highlights" . "highlight")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
361 ("holds" . "hold")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
362 ("ignores" . "ignore")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
363 ("indents" . "indent")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
364 ("initializes" . "initialize")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
365 ("inserts" . "insert")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
366 ("installs" . "install")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
367 ("investigates" . "investigate")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
368 ("keeps" . "keep")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
369 ("kills" . "kill")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
370 ("leaves" . "leave")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
371 ("lets" . "let")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
372 ("loads" . "load")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
373 ("looks" . "look")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
374 ("makes" . "make")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
375 ("marks" . "mark")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
376 ("matches" . "match")
26615
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
377 ("moves" . "move")
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
378 ("notifies" . "notify")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
379 ("offers" . "offer")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
380 ("parses" . "parse")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
381 ("performs" . "perform")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
382 ("prepares" . "prepare")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
383 ("prepends" . "prepend")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
384 ("reads" . "read")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
385 ("raises" . "raise")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
386 ("removes" . "remove")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
387 ("replaces" . "replace")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
388 ("resets" . "reset")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
389 ("restores" . "restore")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
390 ("returns" . "return")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
391 ("runs" . "run")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
392 ("saves" . "save")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
393 ("says" . "say")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
394 ("searches" . "search")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
395 ("selects" . "select")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
396 ("sets" . "set")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
397 ("sex" . "s*x")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
398 ("shows" . "show")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
399 ("signifies" . "signify")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
400 ("sorts" . "sort")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
401 ("starts" . "start")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
402 ("stores" . "store")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
403 ("switches" . "switch")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
404 ("tells" . "tell")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
405 ("tests" . "test")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
406 ("toggles" . "toggle")
22514
dee11277c07d (checkdoc-eval-defun): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 22195
diff changeset
407 ("tries" . "try")
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
408 ("turns" . "turn")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
409 ("undoes" . "undo")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
410 ("unloads" . "unload")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
411 ("unmarks" . "unmark")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
412 ("updates" . "update")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
413 ("uses" . "use")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
414 ("yanks" . "yank")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
415 )
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
416 "Alist of common words in the wrong voice and what should be used instead.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
417 Set `checkdoc-verb-check-experimental-flag' to nil to avoid this costly
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
418 and experimental check. Do not modify this list without setting
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
419 the value of `checkdoc-common-verbs-regexp' to nil which cause it to
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
420 be re-created.")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
421
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
422 (defvar checkdoc-syntax-table nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
423 "Syntax table used by checkdoc in document strings.")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
424
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
425 (if checkdoc-syntax-table
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
426 nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
427 (setq checkdoc-syntax-table (copy-syntax-table emacs-lisp-mode-syntax-table))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
428 ;; When dealing with syntax in doc strings, make sure that - are encompassed
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
429 ;; in words so we can use cheap \\> to get the end of a symbol, not the
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
430 ;; end of a word in a conglomerate.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
431 (modify-syntax-entry ?- "w" checkdoc-syntax-table)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
432 )
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48943
diff changeset
433
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
434
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
435 ;;; Compatibility
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
436 ;;
64379
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
437 (defalias 'checkdoc-make-overlay
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
438 (if (featurep 'xemacs) 'make-extent 'make-overlay))
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
439 (defalias 'checkdoc-overlay-put
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
440 (if (featurep 'xemacs) 'set-extent-property 'overlay-put))
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
441 (defalias 'checkdoc-delete-overlay
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
442 (if (featurep 'xemacs) 'delete-extent 'delete-overlay))
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
443 (defalias 'checkdoc-overlay-start
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
444 (if (featurep 'xemacs) 'extent-start 'overlay-start))
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
445 (defalias 'checkdoc-overlay-end
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
446 (if (featurep 'xemacs) 'extent-end 'overlay-end))
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
447 (defalias 'checkdoc-mode-line-update
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
448 (if (featurep 'xemacs) 'redraw-modeline 'force-mode-line-update))
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
449 (defalias 'checkdoc-char=
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
450 (if (featurep 'xemacs) 'char= '=))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
451
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
452 ;;; User level commands
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
453 ;;
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
454 ;;;###autoload
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
455 (defun checkdoc ()
46363
bf7784999bbd Fix doc typos.
Richard M. Stallman <rms@gnu.org>
parents: 45897
diff changeset
456 "Interactively check the entire buffer for style errors.
bf7784999bbd Fix doc typos.
Richard M. Stallman <rms@gnu.org>
parents: 45897
diff changeset
457 The current status of the check will be displayed in a buffer which
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
458 the users will view as each check is completed."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
459 (interactive)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
460 (let ((status (list "Checking..." "-" "-" "-"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
461 (checkdoc-spellcheck-documentation-flag
46841
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
462 (car (memq checkdoc-spellcheck-documentation-flag
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
463 '(buffer interactive t))))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
464 ;; if the user set autofix to never, then that breaks the
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
465 ;; obviously requested asking implied by using this function.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
466 ;; Set it to paranoia level.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
467 (checkdoc-autofix-flag (if (or (not checkdoc-autofix-flag)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
468 (eq checkdoc-autofix-flag 'never))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
469 'query
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
470 checkdoc-autofix-flag))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
471 tmp)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
472 (checkdoc-display-status-buffer status)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
473 ;; check the comments
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
474 (if (not buffer-file-name)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
475 (setcar status "Not checked")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
476 (if (checkdoc-file-comments-engine)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
477 (setcar status "Errors")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
478 (setcar status "Ok")))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
479 (setcar (cdr status) "Checking...")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
480 (checkdoc-display-status-buffer status)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
481 ;; Check the documentation
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
482 (setq tmp (checkdoc-interactive nil t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
483 (if tmp
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
484 (setcar (cdr status) (format "%d Errors" (length tmp)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
485 (setcar (cdr status) "Ok"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
486 (setcar (cdr (cdr status)) "Checking...")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
487 (checkdoc-display-status-buffer status)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
488 ;; Check the message text
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
489 (if (setq tmp (checkdoc-message-interactive nil t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
490 (setcar (cdr (cdr status)) (format "%d Errors" (length tmp)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
491 (setcar (cdr (cdr status)) "Ok"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
492 (setcar (cdr (cdr (cdr status))) "Checking...")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
493 (checkdoc-display-status-buffer status)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
494 ;; Rogue spacing
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
495 (if (condition-case nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
496 (checkdoc-rogue-spaces nil t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
497 (error t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
498 (setcar (cdr (cdr (cdr status))) "Errors")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
499 (setcar (cdr (cdr (cdr status))) "Ok"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
500 (checkdoc-display-status-buffer status)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
501
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
502 (defun checkdoc-display-status-buffer (check)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
503 "Display and update the status buffer for the current checkdoc mode.
50330
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
504 CHECK is a list of four strings stating the current status of each
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
505 test; the nth string describes the status of the nth test."
25697
6060f83b1ffc (checkdoc-display-status-buffer): Avoid
Dave Love <fx@gnu.org>
parents: 23371
diff changeset
506 (let (temp-buffer-setup-hook)
6060f83b1ffc (checkdoc-display-status-buffer): Avoid
Dave Love <fx@gnu.org>
parents: 23371
diff changeset
507 (with-output-to-temp-buffer " *Checkdoc Status*"
6060f83b1ffc (checkdoc-display-status-buffer): Avoid
Dave Love <fx@gnu.org>
parents: 23371
diff changeset
508 (princ-list
6060f83b1ffc (checkdoc-display-status-buffer): Avoid
Dave Love <fx@gnu.org>
parents: 23371
diff changeset
509 "Buffer comments and tags: " (nth 0 check) "\n"
6060f83b1ffc (checkdoc-display-status-buffer): Avoid
Dave Love <fx@gnu.org>
parents: 23371
diff changeset
510 "Documentation style: " (nth 1 check) "\n"
6060f83b1ffc (checkdoc-display-status-buffer): Avoid
Dave Love <fx@gnu.org>
parents: 23371
diff changeset
511 "Message/Query text style: " (nth 2 check) "\n"
6060f83b1ffc (checkdoc-display-status-buffer): Avoid
Dave Love <fx@gnu.org>
parents: 23371
diff changeset
512 "Unwanted Spaces: " (nth 3 check)
6060f83b1ffc (checkdoc-display-status-buffer): Avoid
Dave Love <fx@gnu.org>
parents: 23371
diff changeset
513 )))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
514 (shrink-window-if-larger-than-buffer
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
515 (get-buffer-window " *Checkdoc Status*"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
516 (message nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
517 (sit-for 0))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
518
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
519 ;;;###autoload
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
520 (defun checkdoc-interactive (&optional start-here showstatus)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
521 "Interactively check the current buffer for doc string errors.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
522 Prefix argument START-HERE will start the checking from the current
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
523 point, otherwise the check starts at the beginning of the current
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
524 buffer. Allows navigation forward and backwards through document
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
525 errors. Does not check for comment or space warnings.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
526 Optional argument SHOWSTATUS indicates that we should update the
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
527 checkdoc status window instead of the usual behavior."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
528 (interactive "P")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
529 (let ((checkdoc-spellcheck-documentation-flag
46841
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
530 (car (memq checkdoc-spellcheck-documentation-flag
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
531 '(interactive t)))))
50330
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
532 (prog1
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
533 ;; Due to a design flaw, this will never spell check
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
534 ;; docstrings.
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
535 (checkdoc-interactive-loop start-here showstatus
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
536 'checkdoc-next-error)
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
537 ;; This is a workaround to perform spell checking.
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
538 (checkdoc-interactive-ispell-loop start-here))))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
539
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
540 ;;;###autoload
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
541 (defun checkdoc-message-interactive (&optional start-here showstatus)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
542 "Interactively check the current buffer for message string errors.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
543 Prefix argument START-HERE will start the checking from the current
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
544 point, otherwise the check starts at the beginning of the current
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
545 buffer. Allows navigation forward and backwards through document
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
546 errors. Does not check for comment or space warnings.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
547 Optional argument SHOWSTATUS indicates that we should update the
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
548 checkdoc status window instead of the usual behavior."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
549 (interactive "P")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
550 (let ((checkdoc-spellcheck-documentation-flag
46841
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
551 (car (memq checkdoc-spellcheck-documentation-flag
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
552 '(interactive t)))))
50330
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
553 (prog1
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
554 ;; Due to a design flaw, this will never spell check messages.
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
555 (checkdoc-interactive-loop start-here showstatus
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
556 'checkdoc-next-message-error)
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
557 ;; This is a workaround to perform spell checking.
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
558 (checkdoc-message-interactive-ispell-loop start-here))))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
559
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
560 (defun checkdoc-interactive-loop (start-here showstatus findfunc)
46363
bf7784999bbd Fix doc typos.
Richard M. Stallman <rms@gnu.org>
parents: 45897
diff changeset
561 "Interactively loop over all errors that can be found by a given method.
50330
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
562
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
563 If START-HERE is nil, searching starts at the beginning of the current
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
564 buffer, otherwise searching starts at START-HERE. SHOWSTATUS
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
565 expresses the verbosity of the search, and whether ending the search
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
566 will auto-exit this function.
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
567
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
568 FINDFUNC is a symbol representing a function that will position the
42706
be541feb06cc Fix typo.
Pavel Janík <Pavel@Janik.cz>
parents: 41608
diff changeset
569 cursor, and return error message text to present to the user. It is
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
570 assumed that the cursor will stop just before a major sexp, which will
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
571 be highlighted to present the user with feedback as to the offending
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
572 style."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
573 ;; Determine where to start the test
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
574 (let* ((begin (prog1 (point)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
575 (if (not start-here) (goto-char (point-min)))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
576 ;; Assign a flag to spellcheck flag
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
577 (checkdoc-spellcheck-documentation-flag
46841
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
578 (car (memq checkdoc-spellcheck-documentation-flag
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
579 '(buffer interactive t))))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
580 ;; Fetch the error list
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
581 (err-list (list (funcall findfunc nil)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
582 (cdo nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
583 (returnme nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
584 c)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
585 (save-window-excursion
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
586 (if (not (car err-list)) (setq err-list nil))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
587 ;; Include whatever function point is in for good measure.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
588 (beginning-of-defun)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
589 (while err-list
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
590 (goto-char (cdr (car err-list)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
591 ;; The cursor should be just in front of the offending doc string
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
592 (if (stringp (car (car err-list)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
593 (setq cdo (save-excursion (checkdoc-make-overlay
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
594 (point) (progn (forward-sexp 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
595 (point)))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
596 (setq cdo (checkdoc-make-overlay
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
597 (checkdoc-error-start (car (car err-list)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
598 (checkdoc-error-end (car (car err-list))))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
599 (unwind-protect
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
600 (progn
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
601 (checkdoc-overlay-put cdo 'face 'highlight)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
602 ;; Make sure the whole doc string is visible if possible.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
603 (sit-for 0)
27444
89c53b25be12 (checkdoc-interactive-loop): Don't lose on a function with an empty
Dave Love <fx@gnu.org>
parents: 26615
diff changeset
604 (if (and (looking-at "\"")
89c53b25be12 (checkdoc-interactive-loop): Don't lose on a function with an empty
Dave Love <fx@gnu.org>
parents: 26615
diff changeset
605 (not (pos-visible-in-window-p
89c53b25be12 (checkdoc-interactive-loop): Don't lose on a function with an empty
Dave Love <fx@gnu.org>
parents: 26615
diff changeset
606 (save-excursion (forward-sexp 1) (point))
89c53b25be12 (checkdoc-interactive-loop): Don't lose on a function with an empty
Dave Love <fx@gnu.org>
parents: 26615
diff changeset
607 (selected-window))))
89c53b25be12 (checkdoc-interactive-loop): Don't lose on a function with an empty
Dave Love <fx@gnu.org>
parents: 26615
diff changeset
608 (let ((l (count-lines (point)
89c53b25be12 (checkdoc-interactive-loop): Don't lose on a function with an empty
Dave Love <fx@gnu.org>
parents: 26615
diff changeset
609 (save-excursion
89c53b25be12 (checkdoc-interactive-loop): Don't lose on a function with an empty
Dave Love <fx@gnu.org>
parents: 26615
diff changeset
610 (forward-sexp 1) (point)))))
89c53b25be12 (checkdoc-interactive-loop): Don't lose on a function with an empty
Dave Love <fx@gnu.org>
parents: 26615
diff changeset
611 (if (> l (window-height))
89c53b25be12 (checkdoc-interactive-loop): Don't lose on a function with an empty
Dave Love <fx@gnu.org>
parents: 26615
diff changeset
612 (recenter 1)
89c53b25be12 (checkdoc-interactive-loop): Don't lose on a function with an empty
Dave Love <fx@gnu.org>
parents: 26615
diff changeset
613 (recenter (/ (- (window-height) l) 2))))
89c53b25be12 (checkdoc-interactive-loop): Don't lose on a function with an empty
Dave Love <fx@gnu.org>
parents: 26615
diff changeset
614 (recenter))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
615 (message "%s (C-h,%se,n,p,q)" (checkdoc-error-text
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
616 (car (car err-list)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
617 (if (checkdoc-error-unfixable (car (car err-list)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
618 "" "f,"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
619 (save-excursion
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
620 (goto-char (checkdoc-error-start (car (car err-list))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
621 (if (not (pos-visible-in-window-p))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
622 (recenter (- (window-height) 2)))
64379
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
623 (setq c (read-event)))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
624 (if (not (integerp c)) (setq c ??))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
625 (cond
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
626 ;; Exit condition
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
627 ((checkdoc-char= c ?\C-g) (signal 'quit nil))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
628 ;; Request an auto-fix
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
629 ((or (checkdoc-char= c ?y) (checkdoc-char= c ?f))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
630 (checkdoc-delete-overlay cdo)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
631 (setq cdo nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
632 (goto-char (cdr (car err-list)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
633 ;; `automatic-then-never' tells the autofix function
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
634 ;; to only allow one fix to be automatic. The autofix
50330
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
635 ;; function will then set the flag to 'never, allowing
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
636 ;; the checker to return a different error.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
637 (let ((checkdoc-autofix-flag 'automatic-then-never)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
638 (fixed nil))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
639 (funcall findfunc t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
640 (setq fixed (not (eq checkdoc-autofix-flag
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
641 'automatic-then-never)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
642 (if (not fixed)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
643 (progn
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
644 (message "A Fix was not available.")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
645 (sit-for 2))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
646 (setq err-list (cdr err-list))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
647 (beginning-of-defun)
54873
bbf96a27b6c5 (checkdoc-output-mode-map, checkdoc-find-error-mouse, checkdoc-find-error):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54498
diff changeset
648 (let ((ne (funcall findfunc nil)))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
649 (if ne
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
650 (setq err-list (cons ne err-list))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
651 (cond ((not err-list)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
652 (message "No More Stylistic Errors.")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
653 (sit-for 2))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
654 (t
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
655 (message
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
656 "No Additional style errors. Continuing...")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
657 (sit-for 2))))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
658 ;; Move to the next error (if available)
65191
9dda4c47e83d (compilation-error-regexp-alist, compilation-mode-font-lock-keywords):
Juanma Barranquero <lekktu@gmail.com>
parents: 64751
diff changeset
659 ((or (checkdoc-char= c ?n) (checkdoc-char= c ?\s))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
660 (let ((ne (funcall findfunc nil)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
661 (if (not ne)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
662 (if showstatus
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
663 (setq returnme err-list
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
664 err-list nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
665 (if (not err-list)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
666 (message "No More Stylistic Errors.")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
667 (message "No Additional style errors. Continuing..."))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
668 (sit-for 2))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
669 (setq err-list (cons ne err-list)))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
670 ;; Go backwards in the list of errors
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
671 ((or (checkdoc-char= c ?p) (checkdoc-char= c ?\C-?))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
672 (if (/= (length err-list) 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
673 (progn
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
674 (setq err-list (cdr err-list))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
675 (goto-char (cdr (car err-list)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
676 (beginning-of-defun))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
677 (message "No Previous Errors.")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
678 (sit-for 2)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
679 ;; Edit the buffer recursively.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
680 ((checkdoc-char= c ?e)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
681 (checkdoc-recursive-edit
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
682 (checkdoc-error-text (car (car err-list))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
683 (checkdoc-delete-overlay cdo)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
684 (setq err-list (cdr err-list)) ;back up the error found.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
685 (beginning-of-defun)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
686 (let ((ne (funcall findfunc nil)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
687 (if (not ne)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
688 (if showstatus
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
689 (setq returnme err-list
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
690 err-list nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
691 (message "No More Stylistic Errors.")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
692 (sit-for 2))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
693 (setq err-list (cons ne err-list)))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
694 ;; Quit checkdoc
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
695 ((checkdoc-char= c ?q)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
696 (setq returnme err-list
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
697 err-list nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
698 begin (point)))
50330
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
699 ;; Goofy stuff
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
700 (t
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
701 (if (get-buffer-window "*Checkdoc Help*")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
702 (progn
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
703 (delete-window (get-buffer-window "*Checkdoc Help*"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
704 (kill-buffer "*Checkdoc Help*"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
705 (with-output-to-temp-buffer "*Checkdoc Help*"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
706 (princ-list
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
707 "Checkdoc Keyboard Summary:\n"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
708 (if (checkdoc-error-unfixable (car (car err-list)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
709 ""
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
710 (concat
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
711 "f, y - auto Fix this warning without asking (if\
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
712 available.)\n"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
713 " Very complex operations will still query.\n")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
714 )
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
715 "e - Enter recursive Edit. Press C-M-c to exit.\n"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
716 "SPC, n - skip to the Next error.\n"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
717 "DEL, p - skip to the Previous error.\n"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
718 "q - Quit checkdoc.\n"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
719 "C-h - Toggle this help buffer."))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
720 (shrink-window-if-larger-than-buffer
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
721 (get-buffer-window "*Checkdoc Help*"))))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
722 (if cdo (checkdoc-delete-overlay cdo)))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
723 (goto-char begin)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
724 (if (get-buffer "*Checkdoc Help*") (kill-buffer "*Checkdoc Help*"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
725 (message "Checkdoc: Done.")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
726 returnme))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
727
50330
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
728 (defun checkdoc-interactive-ispell-loop (start-here)
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
729 "Interactively spell check doc strings in the current buffer.
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
730 If START-HERE is nil, searching starts at the beginning of the current
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
731 buffer, otherwise searching starts at START-HERE."
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
732 (when checkdoc-spellcheck-documentation-flag
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
733 (save-excursion
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
734 ;; Move point to where we need to start.
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
735 (if start-here
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
736 ;; Include whatever function point is in for good measure.
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
737 (beginning-of-defun)
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
738 (goto-char (point-min)))
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
739 ;; Loop over docstrings.
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
740 (while (checkdoc-next-docstring)
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
741 (message "Searching for doc string spell error...%d%%"
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
742 (/ (* 100 (point)) (point-max)))
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
743 (if (looking-at "\"")
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
744 (checkdoc-ispell-docstring-engine
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
745 (save-excursion (forward-sexp 1) (point-marker)))))
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
746 (message "Checkdoc: Done."))))
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
747
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
748 (defun checkdoc-message-interactive-ispell-loop (start-here)
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
749 "Interactively spell check messages in the current buffer.
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
750 If START-HERE is nil, searching starts at the beginning of the current
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
751 buffer, otherwise searching starts at START-HERE."
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
752 (when checkdoc-spellcheck-documentation-flag
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
753 (save-excursion
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
754 ;; Move point to where we need to start.
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
755 (if start-here
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
756 ;; Include whatever function point is in for good measure.
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
757 (beginning-of-defun)
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
758 (goto-char (point-min)))
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
759 ;; Loop over message strings.
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
760 (while (checkdoc-message-text-next-string (point-max))
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
761 (message "Searching for message string spell error...%d%%"
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
762 (/ (* 100 (point)) (point-max)))
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
763 (if (looking-at "\"")
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
764 (checkdoc-ispell-docstring-engine
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
765 (save-excursion (forward-sexp 1) (point-marker)))))
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
766 (message "Checkdoc: Done."))))
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
767
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
768
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
769 (defun checkdoc-next-error (enable-fix)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
770 "Find and return the next checkdoc error list, or nil.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
771 Only documentation strings are checked.
50330
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
772 An error list is of the form (WARNING . POSITION) where WARNING is the
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
773 warning text, and POSITION is the point in the buffer where the error
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
774 was found. We can use points and not markers because we promise not
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
775 to edit the buffer before point without re-executing this check.
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
776 Argument ENABLE-FIX will enable auto-fixing while looking for the next
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
777 error. This argument assumes that the cursor is already positioned to
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
778 perform the fix."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
779 (if enable-fix
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
780 (checkdoc-this-string-valid)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
781 (let ((msg nil) (p (point))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
782 (checkdoc-autofix-flag nil))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
783 (condition-case nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
784 (while (and (not msg) (checkdoc-next-docstring))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
785 (message "Searching for doc string error...%d%%"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
786 (/ (* 100 (point)) (point-max)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
787 (if (setq msg (checkdoc-this-string-valid))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
788 (setq msg (cons msg (point)))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
789 ;; Quit.. restore position, Other errors, leave alone
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
790 (quit (goto-char p)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
791 msg)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
792
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
793 (defun checkdoc-next-message-error (enable-fix)
41222
3d601db16361 (princ-list, checkdoc-read-event, add-to-list): Delete compatibility code.
Richard M. Stallman <rms@gnu.org>
parents: 40926
diff changeset
794 "Find and return the next checkdoc message related error list, or nil.
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
795 Only text for error and `y-or-n-p' strings are checked. See
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
796 `checkdoc-next-error' for details on the return value.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
797 Argument ENABLE-FIX turns on the auto-fix feature. This argument
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
798 assumes that the cursor is already positioned to perform the fix."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
799 (if enable-fix
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
800 (checkdoc-message-text-engine)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
801 (let ((msg nil) (p (point)) (type nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
802 (checkdoc-autofix-flag nil))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
803 (condition-case nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
804 (while (and (not msg)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
805 (setq type
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
806 (checkdoc-message-text-next-string (point-max))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
807 (message "Searching for message string error...%d%%"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
808 (/ (* 100 (point)) (point-max)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
809 (if (setq msg (checkdoc-message-text-engine type))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
810 (setq msg (cons msg (point)))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
811 ;; Quit.. restore position, Other errors, leave alone
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
812 (quit (goto-char p)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
813 msg)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
814
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
815 (defun checkdoc-recursive-edit (msg)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
816 "Enter recursive edit to permit a user to fix some error checkdoc has found.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
817 MSG is the error that was found, which is displayed in a help buffer."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
818 (with-output-to-temp-buffer "*Checkdoc Help*"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
819 (princ-list
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
820 "Error message:\n " msg
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
821 "\n\nEdit to fix this problem, and press C-M-c to continue."))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
822 (shrink-window-if-larger-than-buffer
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
823 (get-buffer-window "*Checkdoc Help*"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
824 (message "When you're done editing press C-M-c to continue.")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
825 (unwind-protect
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
826 (recursive-edit)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
827 (if (get-buffer-window "*Checkdoc Help*")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
828 (progn
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
829 (delete-window (get-buffer-window "*Checkdoc Help*"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
830 (kill-buffer "*Checkdoc Help*")))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
831
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
832 ;;;###autoload
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
833 (defun checkdoc-eval-current-buffer ()
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
834 "Evaluate and check documentation for the current buffer.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
835 Evaluation is done first because good documentation for something that
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
836 doesn't work is just not useful. Comments, doc strings, and rogue
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
837 spacing are all verified."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
838 (interactive)
64379
12443a1e01ee (checkdoc-make-overlay, checkdoc-overlay-put, checkdoc-delete-overlay)
Richard M. Stallman <rms@gnu.org>
parents: 64182
diff changeset
839 (eval-buffer nil)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
840 (checkdoc-current-buffer t))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
841
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
842 ;;;###autoload
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
843 (defun checkdoc-current-buffer (&optional take-notes)
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
844 "Check current buffer for document, comment, error style, and rogue spaces.
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
845 With a prefix argument (in Lisp, the argument TAKE-NOTES),
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
846 store all errors found in a warnings buffer,
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
847 otherwise stop after the first error."
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
848 (interactive "P")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
849 (if (interactive-p) (message "Checking buffer for style..."))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
850 ;; Assign a flag to spellcheck flag
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
851 (let ((checkdoc-spellcheck-documentation-flag
46841
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
852 (car (memq checkdoc-spellcheck-documentation-flag
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
853 '(buffer t))))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
854 (checkdoc-autofix-flag (if take-notes 'never
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
855 checkdoc-autofix-flag))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
856 (checkdoc-generate-compile-warnings-flag
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
857 (or take-notes checkdoc-generate-compile-warnings-flag)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
858 (if take-notes
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
859 (checkdoc-start-section "checkdoc-current-buffer"))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
860 ;; every test is responsible for returning the cursor.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
861 (or (and buffer-file-name ;; only check comments in a file
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
862 (checkdoc-comments))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
863 (checkdoc-start)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
864 (checkdoc-message-text)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
865 (checkdoc-rogue-spaces)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
866 (not (interactive-p))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
867 (if take-notes (checkdoc-show-diagnostics))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
868 (message "Checking buffer for style...Done."))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
869
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
870 ;;;###autoload
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
871 (defun checkdoc-start (&optional take-notes)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
872 "Start scanning the current buffer for documentation string style errors.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
873 Only documentation strings are checked.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
874 Use `checkdoc-continue' to continue checking if an error cannot be fixed.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
875 Prefix argument TAKE-NOTES means to collect all the warning messages into
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
876 a separate buffer."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
877 (interactive "P")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
878 (let ((p (point)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
879 (goto-char (point-min))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
880 (if (and take-notes (interactive-p))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
881 (checkdoc-start-section "checkdoc-start"))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
882 (checkdoc-continue take-notes)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
883 ;; Go back since we can't be here without success above.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
884 (goto-char p)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
885 nil))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
886
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
887 ;;;###autoload
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
888 (defun checkdoc-continue (&optional take-notes)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
889 "Find the next doc string in the current buffer which has a style error.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
890 Prefix argument TAKE-NOTES means to continue through the whole buffer and
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
891 save warnings in a separate buffer. Second optional argument START-POINT
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
892 is the starting location. If this is nil, `point-min' is used instead."
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
893 (interactive "P")
54873
bbf96a27b6c5 (checkdoc-output-mode-map, checkdoc-find-error-mouse, checkdoc-find-error):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54498
diff changeset
894 (let ((wrong nil) (msg nil)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
895 ;; Assign a flag to spellcheck flag
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
896 (checkdoc-spellcheck-documentation-flag
46841
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
897 (car (memq checkdoc-spellcheck-documentation-flag
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
898 '(buffer t))))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
899 (checkdoc-autofix-flag (if take-notes 'never
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
900 checkdoc-autofix-flag))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
901 (checkdoc-generate-compile-warnings-flag
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
902 (or take-notes checkdoc-generate-compile-warnings-flag)))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
903 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
904 ;; If we are taking notes, encompass the whole buffer, otherwise
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
905 ;; the user is navigating down through the buffer.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
906 (while (and (not wrong) (checkdoc-next-docstring))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
907 ;; OK, let's look at the doc string.
21181
2b9774c50f91 Updated to 0.4.3:
Eric M. Ludlam <zappo@gnu.org>
parents: 20953
diff changeset
908 (setq msg (checkdoc-this-string-valid))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
909 (if msg (setq wrong (point)))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
910 (if wrong
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
911 (progn
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
912 (goto-char wrong)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
913 (if (not take-notes)
58899
9715276c90ce (checkdoc-continue, checkdoc-comments, checkdoc-message-text, checkdoc-defun):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57072
diff changeset
914 (error "%s" (checkdoc-error-text msg)))))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
915 (checkdoc-show-diagnostics)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
916 (if (interactive-p)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
917 (message "No style warnings."))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
918
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
919 (defun checkdoc-next-docstring ()
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
920 "Move to the next doc string after point, and return t.
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
921 Return nil if there are no more doc strings."
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
922 (if (not (re-search-forward checkdoc-defun-regexp nil t))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
923 nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
924 ;; search drops us after the identifier. The next sexp is either
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
925 ;; the argument list or the value of the variable. skip it.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
926 (forward-sexp 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
927 (skip-chars-forward " \n\t")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
928 t))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
929
37426
71d360920aad Fix autoload cookies.
Gerd Moellmann <gerd@gnu.org>
parents: 37162
diff changeset
930 ;;;###autoload
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
931 (defun checkdoc-comments (&optional take-notes)
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
932 "Find missing comment sections in the current Emacs Lisp file.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
933 Prefix argument TAKE-NOTES non-nil means to save warnings in a
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
934 separate buffer. Otherwise print a message. This returns the error
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
935 if there is one."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
936 (interactive "P")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
937 (if take-notes (checkdoc-start-section "checkdoc-comments"))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
938 (if (not buffer-file-name)
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
939 (error "Can only check comments for a file buffer"))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
940 (let* ((checkdoc-spellcheck-documentation-flag
46841
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
941 (car (memq checkdoc-spellcheck-documentation-flag
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
942 '(buffer t))))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
943 (checkdoc-autofix-flag (if take-notes 'never checkdoc-autofix-flag))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
944 (e (checkdoc-file-comments-engine))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
945 (checkdoc-generate-compile-warnings-flag
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
946 (or take-notes checkdoc-generate-compile-warnings-flag)))
58899
9715276c90ce (checkdoc-continue, checkdoc-comments, checkdoc-message-text, checkdoc-defun):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57072
diff changeset
947 (if e (error "%s" (checkdoc-error-text e)))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
948 (checkdoc-show-diagnostics)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
949 e))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
950
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
951 ;;;###autoload
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
952 (defun checkdoc-rogue-spaces (&optional take-notes interact)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
953 "Find extra spaces at the end of lines in the current file.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
954 Prefix argument TAKE-NOTES non-nil means to save warnings in a
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
955 separate buffer. Otherwise print a message. This returns the error
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
956 if there is one.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
957 Optional argument INTERACT permits more interactive fixing."
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
958 (interactive "P")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
959 (if take-notes (checkdoc-start-section "checkdoc-rogue-spaces"))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
960 (let* ((checkdoc-autofix-flag (if take-notes 'never checkdoc-autofix-flag))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
961 (e (checkdoc-rogue-space-check-engine nil nil interact))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
962 (checkdoc-generate-compile-warnings-flag
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
963 (or take-notes checkdoc-generate-compile-warnings-flag)))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
964 (if (not (interactive-p))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
965 e
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
966 (if e
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
967 (message (checkdoc-error-text e))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
968 (checkdoc-show-diagnostics)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
969 (message "Space Check: done.")))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
970
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
971 ;;;###autoload
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
972 (defun checkdoc-message-text (&optional take-notes)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
973 "Scan the buffer for occurrences of the error function, and verify text.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
974 Optional argument TAKE-NOTES causes all errors to be logged."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
975 (interactive "P")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
976 (if take-notes (checkdoc-start-section "checkdoc-message-text"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
977 (let* ((p (point)) e
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
978 (checkdoc-autofix-flag (if take-notes 'never checkdoc-autofix-flag))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
979 (checkdoc-generate-compile-warnings-flag
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
980 (or take-notes checkdoc-generate-compile-warnings-flag)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
981 (setq e (checkdoc-message-text-search))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
982 (if (not (interactive-p))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
983 e
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
984 (if e
58899
9715276c90ce (checkdoc-continue, checkdoc-comments, checkdoc-message-text, checkdoc-defun):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57072
diff changeset
985 (error "%s" (checkdoc-error-text e))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
986 (checkdoc-show-diagnostics)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
987 (goto-char p))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
988 (if (interactive-p) (message "Checking interactive message text...done.")))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48943
diff changeset
989
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
990 ;;;###autoload
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
991 (defun checkdoc-eval-defun ()
22514
dee11277c07d (checkdoc-eval-defun): Doc fix.
Karl Heuer <kwzh@gnu.org>
parents: 22195
diff changeset
992 "Evaluate the current form with `eval-defun' and check its documentation.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
993 Evaluation is done first so the form will be read before the
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
994 documentation is checked. If there is a documentation error, then the display
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
995 of what was evaluated will be overwritten by the diagnostic message."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
996 (interactive)
40291
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
997 (call-interactively 'eval-defun)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
998 (checkdoc-defun))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
999
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1000 ;;;###autoload
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1001 (defun checkdoc-defun (&optional no-error)
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1002 "Examine the doc string of the function or variable under point.
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1003 Call `error' if the doc string has problems. If NO-ERROR is
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1004 non-nil, then do not call error, but call `message' instead.
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1005 If the doc string passes the test, then check the function for rogue white
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1006 space at the end of each line."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1007 (interactive)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1008 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1009 (beginning-of-defun)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1010 (if (not (looking-at checkdoc-defun-regexp))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1011 ;; I found this more annoying than useful.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1012 ;;(if (not no-error)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1013 ;; (message "Cannot check this sexp's doc string."))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1014 nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1015 ;; search drops us after the identifier. The next sexp is either
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1016 ;; the argument list or the value of the variable. skip it.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1017 (goto-char (match-end 0))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1018 (forward-sexp 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1019 (skip-chars-forward " \n\t")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1020 (let* ((checkdoc-spellcheck-documentation-flag
46841
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
1021 (car (memq checkdoc-spellcheck-documentation-flag
99952aa7f2c3 (checkdoc, checkdoc-interactive)
Richard M. Stallman <rms@gnu.org>
parents: 46363
diff changeset
1022 '(defun t))))
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1023 (beg (save-excursion (beginning-of-defun) (point)))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1024 (end (save-excursion (end-of-defun) (point)))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1025 (msg (checkdoc-this-string-valid)))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1026 (if msg (if no-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1027 (message (checkdoc-error-text msg))
58899
9715276c90ce (checkdoc-continue, checkdoc-comments, checkdoc-message-text, checkdoc-defun):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57072
diff changeset
1028 (error "%s" (checkdoc-error-text msg)))
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1029 (setq msg (checkdoc-message-text-search beg end))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1030 (if msg (if no-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1031 (message (checkdoc-error-text msg))
58899
9715276c90ce (checkdoc-continue, checkdoc-comments, checkdoc-message-text, checkdoc-defun):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57072
diff changeset
1032 (error "%s" (checkdoc-error-text msg)))
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1033 (setq msg (checkdoc-rogue-space-check-engine beg end))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1034 (if msg (if no-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1035 (message (checkdoc-error-text msg))
58899
9715276c90ce (checkdoc-continue, checkdoc-comments, checkdoc-message-text, checkdoc-defun):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57072
diff changeset
1036 (error "%s" (checkdoc-error-text msg))))))
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1037 (if (interactive-p) (message "Checkdoc: done."))))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1038
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1039 ;;; Ispell interface for forcing a spell check
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1040 ;;
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1041
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1042 ;;;###autoload
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1043 (defun checkdoc-ispell (&optional take-notes)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1044 "Check the style and spelling of everything interactively.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1045 Calls `checkdoc' with spell-checking turned on.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1046 Prefix argument TAKE-NOTES is the same as for `checkdoc'"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1047 (interactive)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1048 (let ((checkdoc-spellcheck-documentation-flag t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1049 (call-interactively 'checkdoc nil current-prefix-arg)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1050
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1051 ;;;###autoload
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1052 (defun checkdoc-ispell-current-buffer (&optional take-notes)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1053 "Check the style and spelling of the current buffer.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1054 Calls `checkdoc-current-buffer' with spell-checking turned on.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1055 Prefix argument TAKE-NOTES is the same as for `checkdoc-current-buffer'"
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1056 (interactive)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1057 (let ((checkdoc-spellcheck-documentation-flag t))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1058 (call-interactively 'checkdoc-current-buffer nil current-prefix-arg)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1059
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1060 ;;;###autoload
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1061 (defun checkdoc-ispell-interactive (&optional take-notes)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1062 "Check the style and spelling of the current buffer interactively.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1063 Calls `checkdoc-interactive' with spell-checking turned on.
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1064 Prefix argument TAKE-NOTES is the same as for `checkdoc-interactive'"
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1065 (interactive)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1066 (let ((checkdoc-spellcheck-documentation-flag t))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1067 (call-interactively 'checkdoc-interactive nil current-prefix-arg)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1068
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1069 ;;;###autoload
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1070 (defun checkdoc-ispell-message-interactive (&optional take-notes)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1071 "Check the style and spelling of message text interactively.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1072 Calls `checkdoc-message-interactive' with spell-checking turned on.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1073 Prefix argument TAKE-NOTES is the same as for `checkdoc-message-interactive'"
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1074 (interactive)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1075 (let ((checkdoc-spellcheck-documentation-flag t))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1076 (call-interactively 'checkdoc-message-interactive nil current-prefix-arg)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1077
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1078 ;;;###autoload
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1079 (defun checkdoc-ispell-message-text (&optional take-notes)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1080 "Check the style and spelling of message text interactively.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1081 Calls `checkdoc-message-text' with spell-checking turned on.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1082 Prefix argument TAKE-NOTES is the same as for `checkdoc-message-text'"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1083 (interactive)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1084 (let ((checkdoc-spellcheck-documentation-flag t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1085 (call-interactively 'checkdoc-message-text nil current-prefix-arg)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1086
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1087 ;;;###autoload
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1088 (defun checkdoc-ispell-start (&optional take-notes)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1089 "Check the style and spelling of the current buffer.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1090 Calls `checkdoc-start' with spell-checking turned on.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1091 Prefix argument TAKE-NOTES is the same as for `checkdoc-start'"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1092 (interactive)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1093 (let ((checkdoc-spellcheck-documentation-flag t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1094 (call-interactively 'checkdoc-start nil current-prefix-arg)))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1095
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1096 ;;;###autoload
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1097 (defun checkdoc-ispell-continue (&optional take-notes)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1098 "Check the style and spelling of the current buffer after point.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1099 Calls `checkdoc-continue' with spell-checking turned on.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1100 Prefix argument TAKE-NOTES is the same as for `checkdoc-continue'"
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1101 (interactive)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1102 (let ((checkdoc-spellcheck-documentation-flag t))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1103 (call-interactively 'checkdoc-continue nil current-prefix-arg)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1104
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1105 ;;;###autoload
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1106 (defun checkdoc-ispell-comments (&optional take-notes)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1107 "Check the style and spelling of the current buffer's comments.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1108 Calls `checkdoc-comments' with spell-checking turned on.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1109 Prefix argument TAKE-NOTES is the same as for `checkdoc-comments'"
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1110 (interactive)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1111 (let ((checkdoc-spellcheck-documentation-flag t))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1112 (call-interactively 'checkdoc-comments nil current-prefix-arg)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1113
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1114 ;;;###autoload
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1115 (defun checkdoc-ispell-defun (&optional take-notes)
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1116 "Check the style and spelling of the current defun with Ispell.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1117 Calls `checkdoc-defun' with spell-checking turned on.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1118 Prefix argument TAKE-NOTES is the same as for `checkdoc-defun'"
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1119 (interactive)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1120 (let ((checkdoc-spellcheck-documentation-flag t))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1121 (call-interactively 'checkdoc-defun nil current-prefix-arg)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1122
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1123 ;;; Error Management
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1124 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1125 ;; Errors returned from checkdoc functions can have various
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1126 ;; features and behaviors, so we need some ways of specifying
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1127 ;; them, and making them easier to use in the wacked-out interfaces
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1128 ;; people are requesting
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1129 (defun checkdoc-create-error (text start end &optional unfixable)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1130 "Used to create the return error text returned from all engines.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1131 TEXT is the descriptive text of the error. START and END define the region
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1132 it is sensible to highlight when describing the problem.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1133 Optional argument UNFIXABLE means that the error has no auto-fix available.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1134
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1135 A list of the form (TEXT START END UNFIXABLE) is returned if we are not
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1136 generating a buffered list of errors."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1137 (if checkdoc-generate-compile-warnings-flag
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1138 (progn (checkdoc-error start text)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1139 nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1140 (list text start end unfixable)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1141
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1142 (defun checkdoc-error-text (err)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1143 "Return the text specified in the checkdoc ERR."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1144 ;; string-p part is for backwards compatibility
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1145 (if (stringp err) err (car err)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1146
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1147 (defun checkdoc-error-start (err)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1148 "Return the start point specified in the checkdoc ERR."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1149 ;; string-p part is for backwards compatibility
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1150 (if (stringp err) nil (nth 1 err)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1151
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1152 (defun checkdoc-error-end (err)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1153 "Return the end point specified in the checkdoc ERR."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1154 ;; string-p part is for backwards compatibility
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1155 (if (stringp err) nil (nth 2 err)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1156
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1157 (defun checkdoc-error-unfixable (err)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1158 "Return the t if we cannot autofix the error specified in the checkdoc ERR."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1159 ;; string-p part is for backwards compatibility
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1160 (if (stringp err) nil (nth 3 err)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1161
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1162 ;;; Minor Mode specification
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1163 ;;
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1164
33495
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1165 (defvar checkdoc-minor-mode-map
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1166 (let ((map (make-sparse-keymap))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1167 (pmap (make-sparse-keymap)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1168 ;; Override some bindings
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1169 (define-key map "\C-\M-x" 'checkdoc-eval-defun)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1170 (define-key map "\C-x`" 'checkdoc-continue)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1171 (if (not (string-match "XEmacs" emacs-version))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1172 (define-key map [menu-bar emacs-lisp eval-buffer]
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1173 'checkdoc-eval-current-buffer))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1174 ;; Add some new bindings under C-c ?
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1175 (define-key pmap "x" 'checkdoc-defun)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1176 (define-key pmap "X" 'checkdoc-ispell-defun)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1177 (define-key pmap "`" 'checkdoc-continue)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1178 (define-key pmap "~" 'checkdoc-ispell-continue)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1179 (define-key pmap "s" 'checkdoc-start)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1180 (define-key pmap "S" 'checkdoc-ispell-start)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1181 (define-key pmap "d" 'checkdoc)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1182 (define-key pmap "D" 'checkdoc-ispell)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1183 (define-key pmap "b" 'checkdoc-current-buffer)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1184 (define-key pmap "B" 'checkdoc-ispell-current-buffer)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1185 (define-key pmap "e" 'checkdoc-eval-current-buffer)
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1186 (define-key pmap "m" 'checkdoc-message-text)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1187 (define-key pmap "M" 'checkdoc-ispell-message-text)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1188 (define-key pmap "c" 'checkdoc-comments)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1189 (define-key pmap "C" 'checkdoc-ispell-comments)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1190 (define-key pmap " " 'checkdoc-rogue-spaces)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1191
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1192 ;; bind our submap into map
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1193 (define-key map "\C-c?" pmap)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1194 map)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1195 "Keymap used to override evaluation key-bindings for documentation checking.")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1196
49621
45cd70f39238 (checkdoc-minor-keymap): Add obsolescence declaration and remove redundant info
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1197 (defvaralias 'checkdoc-minor-keymap 'checkdoc-minor-mode-map)
45cd70f39238 (checkdoc-minor-keymap): Add obsolescence declaration and remove redundant info
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1198 (make-obsolete-variable 'checkdoc-minor-keymap
45cd70f39238 (checkdoc-minor-keymap): Add obsolescence declaration and remove redundant info
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
1199 'checkdoc-minor-mode-map)
33495
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1200
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1201 ;; Add in a menubar with easy-menu
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1202
33495
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1203 (easy-menu-define
48943
d096b3c93f80 Don't define a name for the minor mode menu.
Richard M. Stallman <rms@gnu.org>
parents: 48403
diff changeset
1204 nil checkdoc-minor-mode-map "Checkdoc Minor Mode Menu"
33495
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1205 '("CheckDoc"
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1206 ["Interactive Buffer Style Check" checkdoc t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1207 ["Interactive Buffer Style and Spelling Check" checkdoc-ispell t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1208 ["Check Buffer" checkdoc-current-buffer t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1209 ["Check and Spell Buffer" checkdoc-ispell-current-buffer t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1210 "---"
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1211 ["Interactive Style Check" checkdoc-interactive t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1212 ["Interactive Style and Spelling Check" checkdoc-ispell-interactive t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1213 ["Find First Style Error" checkdoc-start t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1214 ["Find First Style or Spelling Error" checkdoc-ispell-start t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1215 ["Next Style Error" checkdoc-continue t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1216 ["Next Style or Spelling Error" checkdoc-ispell-continue t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1217 ["Interactive Message Text Style Check" checkdoc-message-interactive t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1218 ["Interactive Message Text Style and Spelling Check"
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1219 checkdoc-ispell-message-interactive t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1220 ["Check Message Text" checkdoc-message-text t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1221 ["Check and Spell Message Text" checkdoc-ispell-message-text t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1222 ["Check Comment Style" checkdoc-comments buffer-file-name]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1223 ["Check Comment Style and Spelling" checkdoc-ispell-comments
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1224 buffer-file-name]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1225 ["Check for Rogue Spaces" checkdoc-rogue-spaces t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1226 "---"
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1227 ["Check Defun" checkdoc-defun t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1228 ["Check and Spell Defun" checkdoc-ispell-defun t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1229 ["Check and Evaluate Defun" checkdoc-eval-defun t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1230 ["Check and Evaluate Buffer" checkdoc-eval-current-buffer t]
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1231 ))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1232 ;; XEmacs requires some weird stuff to add this menu in a minor mode.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1233 ;; What is it?
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1234
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1235 ;;;###autoload
45258
be966e885dcc (checkdoc-minor-mode): Define it with define-minor-mode.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 43133
diff changeset
1236 (define-minor-mode checkdoc-minor-mode
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1237 "Toggle Checkdoc minor mode, a mode for checking Lisp doc strings.
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1238 With prefix ARG, turn Checkdoc minor mode on iff ARG is positive.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1239
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1240 In Checkdoc minor mode, the usual bindings for `eval-defun' which is
55446
2849e4ae725f (checkdoc-minor-mode): Doc fix.
Andreas Schwab <schwab@suse.de>
parents: 55110
diff changeset
1241 bound to \\<checkdoc-minor-mode-map>\\[checkdoc-eval-defun] and `checkdoc-eval-current-buffer' are overridden to include
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1242 checking of documentation strings.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1243
33495
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1244 \\{checkdoc-minor-mode-map}"
48403
68ad51bc7338 (checkdoc-minor-mode): Add group.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48195
diff changeset
1245 nil " CDoc" nil
68ad51bc7338 (checkdoc-minor-mode): Add group.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48195
diff changeset
1246 :group 'checkdoc)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1247
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1248 ;;; Subst utils
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1249 ;;
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1250 (defsubst checkdoc-run-hooks (hookvar &rest args)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1251 "Run hooks in HOOKVAR with ARGS."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1252 (if (fboundp 'run-hook-with-args-until-success)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1253 (apply 'run-hook-with-args-until-success hookvar args)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1254 ;; This method was similar to above. We ignore the warning
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1255 ;; since we will use the above for future Emacs versions
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1256 (apply 'run-hook-with-args hookvar args)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1257
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1258 (defsubst checkdoc-create-common-verbs-regexp ()
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1259 "Rebuild the contents of `checkdoc-common-verbs-regexp'."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1260 (or checkdoc-common-verbs-regexp
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1261 (setq checkdoc-common-verbs-regexp
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1262 (concat "\\<\\("
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1263 (mapconcat (lambda (e) (concat (car e)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1264 checkdoc-common-verbs-wrong-voice "\\|")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1265 "\\)\\>"))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1266
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1267 ;; Profiler says this is not yet faster than just calling assoc
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1268 ;;(defun checkdoc-word-in-alist-vector (word vector)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1269 ;; "Check to see if WORD is in the car of an element of VECTOR.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1270 ;;VECTOR must be sorted. The CDR should be a replacement. Since the
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1271 ;;word list is getting bigger, it is time for a quick bisecting search."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1272 ;; (let ((max (length vector)) (min 0) i
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1273 ;; (found nil) (fw nil))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1274 ;; (setq i (/ max 2))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1275 ;; (while (and (not found) (/= min max))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1276 ;; (setq fw (car (aref vector i)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1277 ;; (cond ((string= word fw) (setq found (cdr (aref vector i))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1278 ;; ((string< word fw) (setq max i))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1279 ;; (t (setq min i)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1280 ;; (setq i (/ (+ max min) 2))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1281 ;; )
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1282 ;; found))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1283
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1284 ;;; Checking engines
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1285 ;;
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1286 (defun checkdoc-this-string-valid ()
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1287 "Return a message string if the current doc string is invalid.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1288 Check for style only, such as the first line always being a complete
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1289 sentence, whitespace restrictions, and making sure there are no
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1290 hard-coded key-codes such as C-[char] or mouse-[number] in the comment.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1291 See the style guide in the Emacs Lisp manual for more details."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1292
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1293 ;; Jump over comments between the last object and the doc string
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1294 (while (looking-at "[ \t\n]*;")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1295 (forward-line 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1296 (beginning-of-line)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1297 (skip-chars-forward " \n\t"))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1298
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1299 (let ((fp (checkdoc-defun-info))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1300 (err nil))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1301 (setq
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1302 err
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1303 ;; * Every command, function, or variable intended for users to know
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1304 ;; about should have a documentation string.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1305 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1306 ;; * An internal variable or subroutine of a Lisp program might as well
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1307 ;; have a documentation string. In earlier Emacs versions, you could
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1308 ;; save space by using a comment instead of a documentation string,
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1309 ;; but that is no longer the case.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1310 (if (and (not (nth 1 fp)) ; not a variable
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1311 (or (nth 2 fp) ; is interactive
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1312 checkdoc-force-docstrings-flag) ;or we always complain
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1313 (not (checkdoc-char= (following-char) ?\"))) ; no doc string
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1314 ;; Sometimes old code has comments where the documentation should
23192
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1315 ;; be. Let's see if we can find the comment, and offer to turn it
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1316 ;; into documentation for them.
25697
6060f83b1ffc (checkdoc-display-status-buffer): Avoid
Dave Love <fx@gnu.org>
parents: 23371
diff changeset
1317 (let ((have-comment nil)
6060f83b1ffc (checkdoc-display-status-buffer): Avoid
Dave Love <fx@gnu.org>
parents: 23371
diff changeset
1318 (comment-start ";")) ; in case it's not default
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1319 (condition-case nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1320 (progn
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1321 (forward-sexp -1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1322 (forward-sexp 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1323 (skip-chars-forward "\n \t")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1324 (setq have-comment (looking-at comment-start)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1325 (error nil))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1326 (if have-comment
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1327 (if (or (eq checkdoc-autofix-flag
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1328 'automatic-then-never)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1329 (checkdoc-y-or-n-p
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1330 "Convert comment to documentation? "))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1331 (save-excursion
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1332 ;; Our point is at the beginning of the comment!
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1333 ;; Insert a quote, then remove the comment chars.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1334 (insert "\"")
23192
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1335 (let ((docstring-start-point (point)))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1336 (while (looking-at comment-start)
23192
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1337 (while (looking-at comment-start)
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1338 (delete-char 1))
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1339 (if (looking-at "[ \t]+")
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1340 (delete-region (match-beginning 0) (match-end 0)))
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1341 (forward-line 1)
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1342 (beginning-of-line)
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1343 (skip-chars-forward " \t")
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1344 (if (looking-at comment-start)
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1345 (progn
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1346 (beginning-of-line)
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1347 (zap-to-char 1 ?\;))))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1348 (beginning-of-line)
23192
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1349 (forward-char -1)
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1350 (insert "\"")
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1351 (forward-char -1)
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1352 ;; quote any double-quote characters in the comment.
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1353 (while (search-backward "\"" docstring-start-point t)
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1354 (insert "\\"))
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1355 (if (eq checkdoc-autofix-flag 'automatic-then-never)
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1356 (setq checkdoc-autofix-flag 'never))))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1357 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1358 "You should convert this comment to documentation"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1359 (point) (save-excursion (end-of-line) (point))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1360 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1361 (if (nth 2 fp)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1362 "All interactive functions should have documentation"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1363 "All variables and subroutines might as well have a \
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1364 documentation string")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1365 (point) (+ (point) 1) t)))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1366 (if (and (not err) (looking-at "\""))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1367 (let ((old-syntax-table (syntax-table)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1368 (unwind-protect
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1369 (progn
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1370 (set-syntax-table checkdoc-syntax-table)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1371 (checkdoc-this-string-valid-engine fp))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1372 (set-syntax-table old-syntax-table)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1373 err)))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1374
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1375 (defun checkdoc-this-string-valid-engine (fp)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1376 "Return an error list or string if the current doc string is invalid.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1377 Depends on `checkdoc-this-string-valid' to reset the syntax table so that
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1378 regexp short cuts work. FP is the function defun information."
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1379 (let ((case-fold-search nil)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1380 ;; Use a marker so if an early check modifies the text,
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1381 ;; we won't accidentally loose our place. This could cause
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1382 ;; end-of doc string whitespace to also delete the " char.
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1383 (s (point))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1384 (e (if (looking-at "\"")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1385 (save-excursion (forward-sexp 1) (point-marker))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1386 (point))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1387 (or
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1388 ;; * *Do not* indent subsequent lines of a documentation string so that
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1389 ;; the text is lined up in the source code with the text of the first
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1390 ;; line. This looks nice in the source code, but looks bizarre when
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1391 ;; users view the documentation. Remember that the indentation
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1392 ;; before the starting double-quote is not part of the string!
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1393 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1394 (forward-line 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1395 (beginning-of-line)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1396 (if (and (< (point) e)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1397 (looking-at "\\([ \t]+\\)[^ \t\n]"))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1398 (if (checkdoc-autofix-ask-replace (match-beginning 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1399 (match-end 1)
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1400 "Remove this whitespace? "
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1401 "")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1402 nil
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1403 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1404 "Second line should not have indentation"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1405 (match-beginning 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1406 (match-end 1)))))
39319
bce0864bc830 (checkdoc-this-string-valid-engine):
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1407 ;; * Check for '(' in column 0.
bce0864bc830 (checkdoc-this-string-valid-engine):
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1408 (save-excursion
bce0864bc830 (checkdoc-this-string-valid-engine):
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1409 (when (re-search-forward "^(" e t)
bce0864bc830 (checkdoc-this-string-valid-engine):
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1410 (if (checkdoc-autofix-ask-replace (match-beginning 0)
bce0864bc830 (checkdoc-this-string-valid-engine):
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1411 (match-end 0)
bce0864bc830 (checkdoc-this-string-valid-engine):
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1412 "Escape this '('? "
bce0864bc830 (checkdoc-this-string-valid-engine):
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1413 "\\(")
bce0864bc830 (checkdoc-this-string-valid-engine):
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1414 nil
bce0864bc830 (checkdoc-this-string-valid-engine):
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1415 (checkdoc-create-error
bce0864bc830 (checkdoc-this-string-valid-engine):
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1416 "Open parenthesis in column 0 should be escaped"
bce0864bc830 (checkdoc-this-string-valid-engine):
Gerd Moellmann <gerd@gnu.org>
parents: 38436
diff changeset
1417 (match-beginning 0) (match-end 0)))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1418 ;; * Do not start or end a documentation string with whitespace.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1419 (let (start end)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1420 (if (or (if (looking-at "\"\\([ \t\n]+\\)")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1421 (setq start (match-beginning 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1422 end (match-end 1)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1423 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1424 (forward-sexp 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1425 (forward-char -1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1426 (if (/= (skip-chars-backward " \t\n") 0)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1427 (setq start (point)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1428 end (1- e)))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1429 (if (checkdoc-autofix-ask-replace
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1430 start end "Remove this whitespace? " "")
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1431 nil
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1432 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1433 "Documentation strings should not start or end with whitespace"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1434 start end))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1435 ;; * The first line of the documentation string should consist of one
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1436 ;; or two complete sentences that stand on their own as a summary.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1437 ;; `M-x apropos' displays just the first line, and if it doesn't
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1438 ;; stand on its own, the result looks bad. In particular, start the
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1439 ;; first line with a capital letter and end with a period.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1440 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1441 (end-of-line)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1442 (skip-chars-backward " \t\n")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1443 (if (> (point) e) (goto-char e)) ;of the form (defun n () "doc" nil)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1444 (forward-char -1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1445 (cond
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1446 ((and (checkdoc-char= (following-char) ?\")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1447 ;; A backslashed double quote at the end of a sentence
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1448 (not (checkdoc-char= (preceding-char) ?\\)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1449 ;; We might have to add a period in this case
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1450 (forward-char -1)
23192
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1451 (if (looking-at "[.!?]")
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1452 nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1453 (forward-char 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1454 (if (checkdoc-autofix-ask-replace
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1455 (point) (1+ (point)) "Add period to sentence? "
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1456 ".\"" t)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1457 nil
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1458 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1459 "First sentence should end with punctuation"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1460 (point) (1+ (point))))))
23192
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1461 ((looking-at "[\\!?;:.)]")
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1462 ;; These are ok
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1463 nil)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1464 ((and checkdoc-permit-comma-termination-flag (looking-at ","))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1465 nil)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1466 (t
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1467 ;; If it is not a complete sentence, let's see if we can
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1468 ;; predict a clever way to make it one.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1469 (let ((msg "First line is not a complete sentence")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1470 (e (point)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1471 (beginning-of-line)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1472 (if (re-search-forward "\\. +" e t)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1473 ;; Here we have found a complete sentence, but no break.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1474 (if (checkdoc-autofix-ask-replace
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1475 (1+ (match-beginning 0)) (match-end 0)
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1476 "First line not a complete sentence. Add RET here? "
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1477 "\n" t)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1478 (let (l1 l2)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1479 (forward-line 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1480 (end-of-line)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1481 (setq l1 (current-column)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1482 l2 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1483 (forward-line 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1484 (end-of-line)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1485 (current-column)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1486 (if (> (+ l1 l2 1) 80)
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1487 (setq msg "Incomplete auto-fix; doc string \
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1488 may require more formatting")
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1489 ;; We can merge these lines! Replace this CR
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1490 ;; with a space.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1491 (delete-char 1) (insert " ")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1492 (setq msg nil))))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1493 ;; Let's see if there is enough room to draw the next
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1494 ;; line's sentence up here. I often get hit w/
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1495 ;; auto-fill moving my words around.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1496 (let ((numc (progn (end-of-line) (- 80 (current-column))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1497 (p (point)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1498 (forward-line 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1499 (beginning-of-line)
23192
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1500 (if (and (re-search-forward "[.!?:\"]\\([ \t\n]+\\|\"\\)"
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1501 (save-excursion
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1502 (end-of-line)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1503 (point))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1504 t)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1505 (< (current-column) numc))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1506 (if (checkdoc-autofix-ask-replace
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1507 p (1+ p)
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1508 "1st line not a complete sentence. Join these lines? "
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1509 " " t)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1510 (progn
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1511 ;; They said yes. We have more fill work to do...
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1512 (goto-char (match-beginning 1))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1513 (delete-region (point) (match-end 1))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1514 (insert "\n")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1515 (setq msg nil))))))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1516 (if msg
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1517 (checkdoc-create-error msg s (save-excursion
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1518 (goto-char s)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1519 (end-of-line)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1520 (point)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1521 nil) ))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1522 ;; Continuation of above. Make sure our sentence is capitalized.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1523 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1524 (skip-chars-forward "\"\\*")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1525 (if (looking-at "[a-z]")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1526 (if (checkdoc-autofix-ask-replace
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1527 (match-beginning 0) (match-end 0)
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1528 "Capitalize your sentence? " (upcase (match-string 0))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1529 t)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1530 nil
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1531 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1532 "First line should be capitalized"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1533 (match-beginning 0) (match-end 0)))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1534 nil))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1535 ;; * Don't write key sequences directly in documentation strings.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1536 ;; Instead, use the `\\[...]' construct to stand for them.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1537 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1538 (let ((f nil) (m nil) (start (point))
21181
2b9774c50f91 Updated to 0.4.3:
Eric M. Ludlam <zappo@gnu.org>
parents: 20953
diff changeset
1539 (re "[^`A-Za-z0-9_]\\([CMA]-[a-zA-Z]\\|\\(\\([CMA]-\\)?\
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1540 mouse-[0-3]\\)\\)\\>"))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1541 ;; Find the first key sequence not in a sample
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1542 (while (and (not f) (setq m (re-search-forward re e t)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1543 (setq f (not (checkdoc-in-sample-code-p start e))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1544 (if m
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1545 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1546 (concat
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1547 "Keycode " (match-string 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1548 " embedded in doc string. Use \\\\<keymap> & \\\\[function] "
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1549 "instead")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1550 (match-beginning 1) (match-end 1) t))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1551 ;; It is not practical to use `\\[...]' very many times, because
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1552 ;; display of the documentation string will become slow. So use this
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1553 ;; to describe the most important commands in your major mode, and
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1554 ;; then use `\\{...}' to display the rest of the mode's keymap.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1555 (save-excursion
57072
9dd4195f1c06 (checkdoc-this-string-valid-engine):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55446
diff changeset
1556 (if (and (re-search-forward "\\\\\\\\\\[\\w+" e t
9dd4195f1c06 (checkdoc-this-string-valid-engine):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55446
diff changeset
1557 (1+ checkdoc-max-keyref-before-warn))
9dd4195f1c06 (checkdoc-this-string-valid-engine):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55446
diff changeset
1558 (not (re-search-forward "\\\\\\\\{\\w+}" e t)))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1559 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1560 "Too many occurrences of \\[function]. Use \\{keymap} instead"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1561 s (marker-position e))))
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1562 ;; Ambiguous quoted symbol. When a symbol is both bound and fbound,
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1563 ;; and is referred to in documentation, it should be prefixed with
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1564 ;; something to disambiguate it. This check must be before the
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1565 ;; 80 column check because it will probably break that.
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1566 (save-excursion
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1567 (let ((case-fold-search t)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1568 (ret nil) mb me)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1569 (while (and (re-search-forward "`\\(\\sw\\(\\sw\\|\\s_\\)+\\)'" e t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1570 (not ret))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1571 (let* ((ms1 (match-string 1))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1572 (sym (intern-soft ms1)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1573 (setq mb (match-beginning 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1574 me (match-end 1))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1575 (if (and sym (boundp sym) (fboundp sym)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1576 (save-excursion
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1577 (goto-char mb)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1578 (forward-word -1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1579 (not (looking-at
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1580 "variable\\|option\\|function\\|command\\|symbol"))))
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1581 (if (checkdoc-autofix-ask-replace
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1582 mb me "Prefix this ambiguous symbol? " ms1 t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1583 ;; We didn't actually replace anything. Here we find
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1584 ;; out what special word form they wish to use as
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1585 ;; a prefix.
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1586 (let ((disambiguate
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1587 (completing-read
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65191
diff changeset
1588 "Disambiguating Keyword (default variable): "
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1589 '(("function") ("command") ("variable")
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1590 ("option") ("symbol"))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1591 nil t nil nil "variable")))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1592 (goto-char (1- mb))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1593 (insert disambiguate " ")
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1594 (forward-word 1))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1595 (setq ret
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1596 (format "Disambiguate %s by preceding w/ \
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1597 function,command,variable,option or symbol." ms1))))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1598 (if ret
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1599 (checkdoc-create-error ret mb me)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1600 nil)))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1601 ;; * Format the documentation string so that it fits in an
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1602 ;; Emacs window on an 80-column screen. It is a good idea
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1603 ;; for most lines to be no wider than 60 characters. The
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1604 ;; first line can be wider if necessary to fit the
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1605 ;; information that ought to be there.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1606 (save-excursion
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1607 (let ((start (point))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1608 (eol nil))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1609 (while (and (< (point) e)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1610 (or (progn (end-of-line) (setq eol (point))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1611 (< (current-column) 80))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1612 (progn (beginning-of-line)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1613 (re-search-forward "\\\\\\\\[[<{]"
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1614 eol t))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1615 (checkdoc-in-sample-code-p start e)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1616 (forward-line 1))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1617 (end-of-line)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1618 (if (and (< (point) e) (> (current-column) 80))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1619 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1620 "Some lines are over 80 columns wide"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1621 s (save-excursion (goto-char s) (end-of-line) (point)) ))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1622 ;; Here we deviate to tests based on a variable or function.
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1623 ;; We must do this before checking for symbols in quotes because there
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1624 ;; is a chance that just such a symbol might really be an argument.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1625 (cond ((eq (nth 1 fp) t)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1626 ;; This is if we are in a variable
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1627 (or
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1628 ;; * The documentation string for a variable that is a
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1629 ;; yes-or-no flag should start with words such as Non-nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1630 ;; means..., to make it clear that all non-`nil' values are
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1631 ;; equivalent and indicate explicitly what `nil' and non-`nil'
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1632 ;; mean.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1633 ;; * If a user option variable records a true-or-false
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1634 ;; condition, give it a name that ends in `-flag'.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1635
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1636 ;; If the variable has -flag in the name, make sure
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1637 (if (and (string-match "-flag$" (car fp))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1638 (not (looking-at "\"\\*?Non-nil\\s-+means\\s-+")))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1639 (checkdoc-create-error
26615
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
1640 "Flag variable doc strings should usually start: Non-nil means"
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1641 s (marker-position e) t))
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1642 ;; If the doc string starts with "Non-nil means"
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1643 (if (and (looking-at "\"\\*?Non-nil\\s-+means\\s-+")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1644 (not (string-match "-flag$" (car fp))))
43133
c929176c272b (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1645 (let ((newname
c929176c272b (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1646 (if (string-match "-p$" (car fp))
c929176c272b (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1647 (concat (substring (car fp) 0 -2) "-flag")
c929176c272b (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1648 (concat (car fp) "-flag"))))
c929176c272b (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1649 (if (checkdoc-y-or-n-p
c929176c272b (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1650 (format
45897
19b72b42b514 (checkdoc-this-string-valid-engine): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 45258
diff changeset
1651 "Rename to %s and Query-Replace all occurrences? "
43133
c929176c272b (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1652 newname))
c929176c272b (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1653 (progn
c929176c272b (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1654 (beginning-of-defun)
c929176c272b (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1655 (query-replace-regexp
c929176c272b (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1656 (concat "\\<" (regexp-quote (car fp)) "\\>")
c929176c272b (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1657 newname))
c929176c272b (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1658 (checkdoc-create-error
c929176c272b (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1659 "Flag variable names should normally end in `-flag'" s
c929176c272b (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 42706
diff changeset
1660 (marker-position e)))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1661 ;; Done with variables
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1662 ))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1663 (t
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1664 ;; This if we are in a function definition
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1665 (or
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1666 ;; * When a function's documentation string mentions the value
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1667 ;; of an argument of the function, use the argument name in
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1668 ;; capital letters as if it were a name for that value. Thus,
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1669 ;; the documentation string of the function `/' refers to its
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1670 ;; second argument as `DIVISOR', because the actual argument
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1671 ;; name is `divisor'.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1672
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1673 ;; Addendum: Make sure they appear in the doc in the same
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1674 ;; order that they are found in the arg list.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1675 (let ((args (cdr (cdr (cdr (cdr fp)))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1676 (last-pos 0)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1677 (found 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1678 (order (and (nth 3 fp) (car (nth 3 fp))))
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1679 (nocheck (append '("&optional" "&rest") (nth 3 fp)))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1680 (inopts nil))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1681 (while (and args found (> found last-pos))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1682 (if (member (car args) nocheck)
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1683 (setq args (cdr args)
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1684 inopts t)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1685 (setq last-pos found
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1686 found (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1687 (re-search-forward
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1688 (concat "\\<" (upcase (car args))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1689 ;; Require whitespace OR
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1690 ;; ITEMth<space> OR
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1691 ;; ITEMs<space>
40291
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
1692 "\\(\\>\\|th\\>\\|s\\>\\|[.,;:]\\)")
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1693 e t)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1694 (if (not found)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1695 (let ((case-fold-search t))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1696 ;; If the symbol was not found, let's see if we
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1697 ;; can find it with a different capitalization
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1698 ;; and see if the user wants to capitalize it.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1699 (if (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1700 (re-search-forward
23192
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1701 (concat "\\<\\(" (car args)
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1702 ;; Require whitespace OR
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1703 ;; ITEMth<space> OR
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1704 ;; ITEMs<space>
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1705 "\\)\\(\\>\\|th\\>\\|s\\>\\)")
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
1706 e t))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1707 (if (checkdoc-autofix-ask-replace
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1708 (match-beginning 1) (match-end 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1709 (format
26615
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
1710 "If this is the argument `%s', it should appear as %s. Fix? "
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1711 (car args) (upcase (car args)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1712 (upcase (car args)) t)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1713 (setq found (match-beginning 1))))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1714 (if found (setq args (cdr args)))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1715 (if (not found)
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1716 ;; It wasn't found at all! Offer to attach this new symbol
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1717 ;; to the end of the documentation string.
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1718 (if (checkdoc-y-or-n-p
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1719 (format
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1720 "Add %s documentation to end of doc string? "
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1721 (upcase (car args))))
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1722 ;; Now do some magic and invent a doc string.
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1723 (save-excursion
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1724 (goto-char e) (forward-char -1)
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1725 (insert "\n"
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1726 (if inopts "Optional a" "A")
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1727 "rgument " (upcase (car args))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1728 " ")
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1729 (insert (read-string "Describe: "))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1730 (if (not (save-excursion (forward-char -1)
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1731 (looking-at "[.?!]")))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1732 (insert "."))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
1733 nil)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1734 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1735 (format
26615
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
1736 "Argument `%s' should appear (as %s) in the doc string"
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1737 (car args) (upcase (car args)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1738 s (marker-position e)))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1739 (if (or (and order (eq order 'yes))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1740 (and (not order) checkdoc-arguments-in-order-flag))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1741 (if (< found last-pos)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1742 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1743 "Arguments occur in the doc string out of order"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1744 s (marker-position e) t)))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1745 ;; * For consistency, phrase the verb in the first sentence of a
26615
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
1746 ;; documentation string for functions as an imperative.
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
1747 ;; For instance, use `Return the cons of A and
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1748 ;; B.' in preference to `Returns the cons of A and B.'
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1749 ;; Usually it looks good to do likewise for the rest of the
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1750 ;; first paragraph. Subsequent paragraphs usually look better
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1751 ;; if they have proper subjects.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1752 ;;
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1753 ;; This is the least important of the above tests. Make sure
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1754 ;; it occurs last.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1755 (and checkdoc-verb-check-experimental-flag
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1756 (save-excursion
50330
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
1757 ;; Maybe rebuild the monster-regexp
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1758 (checkdoc-create-common-verbs-regexp)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1759 (let ((lim (save-excursion
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1760 (end-of-line)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1761 ;; check string-continuation
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1762 (if (checkdoc-char= (preceding-char) ?\\)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1763 (progn (forward-line 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1764 (end-of-line)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1765 (point)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1766 (rs nil) replace original (case-fold-search t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1767 (while (and (not rs)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1768 (re-search-forward
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1769 checkdoc-common-verbs-regexp
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1770 lim t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1771 (setq original (buffer-substring-no-properties
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1772 (match-beginning 1) (match-end 1))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1773 rs (assoc (downcase original)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1774 checkdoc-common-verbs-wrong-voice))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1775 (if (not rs) (error "Verb voice alist corrupted"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1776 (setq replace (let ((case-fold-search nil))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1777 (save-match-data
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1778 (if (string-match "^[A-Z]" original)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1779 (capitalize (cdr rs))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1780 (cdr rs)))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1781 (if (checkdoc-autofix-ask-replace
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1782 (match-beginning 1) (match-end 1)
26615
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
1783 (format "Use the imperative for \"%s\". \
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
1784 Replace with \"%s\"? " original replace)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1785 replace t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1786 (setq rs nil)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1787 (if rs
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1788 ;; there was a match, but no replace
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1789 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1790 (format
26615
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
1791 "Probably \"%s\" should be imperative \"%s\""
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1792 original replace)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1793 (match-beginning 1) (match-end 1))))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1794 ;; Done with functions
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1795 )))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1796 ;;* When a documentation string refers to a Lisp symbol, write it as
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1797 ;; it would be printed (which usually means in lower case), with
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1798 ;; single-quotes around it. For example: `lambda'. There are two
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1799 ;; exceptions: write t and nil without single-quotes. (In this
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1800 ;; manual, we normally do use single-quotes for those symbols.)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1801 (save-excursion
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1802 (let ((found nil) (start (point)) (msg nil) (ms nil))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1803 (while (and (not msg)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1804 (re-search-forward
33495
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1805 "[^-([`':a-zA-Z]\\(\\w+[:-]\\(\\w\\|\\s_\\)+\\)[^]']"
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1806 e t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1807 (setq ms (match-string 1))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1808 (save-match-data
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1809 ;; A . is a \s_ char, so we must remove periods from
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1810 ;; sentences more carefully.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1811 (if (string-match "\\.$" ms)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1812 (setq ms (substring ms 0 (1- (length ms))))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1813 (if (and (not (checkdoc-in-sample-code-p start e))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1814 (not (checkdoc-in-example-string-p start e))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1815 (not (member ms checkdoc-symbol-words))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1816 (setq found (intern-soft ms))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1817 (or (boundp found) (fboundp found)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1818 (progn
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1819 (setq msg (format "Add quotes around Lisp symbol `%s'? "
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1820 ms))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1821 (if (checkdoc-autofix-ask-replace
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1822 (match-beginning 1) (+ (match-beginning 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1823 (length ms))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1824 msg (concat "`" ms "'") t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1825 (setq msg nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1826 (setq msg
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1827 (format "Lisp symbol `%s' should appear in quotes"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1828 ms))))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1829 (if msg
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1830 (checkdoc-create-error msg (match-beginning 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1831 (+ (match-beginning 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1832 (length ms)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1833 nil)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1834 ;; t and nil case
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1835 (save-excursion
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1836 (if (re-search-forward "\\(`\\(t\\|nil\\)'\\)" e t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1837 (if (checkdoc-autofix-ask-replace
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1838 (match-beginning 1) (match-end 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1839 (format "%s should not appear in quotes. Remove? "
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1840 (match-string 2))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1841 (match-string 2) t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1842 nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1843 (checkdoc-create-error
26615
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
1844 "Symbols t and nil should not appear in `...' quotes"
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1845 (match-beginning 1) (match-end 1)))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1846 ;; Here is some basic sentence formatting
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1847 (checkdoc-sentencespace-region-engine (point) e)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1848 ;; Here are common proper nouns that should always appear capitalized.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1849 (checkdoc-proper-noun-region-engine (point) e)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1850 ;; Make sure the doc string has correctly spelled English words
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1851 ;; in it. This function is extracted due to its complexity,
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1852 ;; and reliance on the Ispell program.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1853 (checkdoc-ispell-docstring-engine e)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1854 ;; User supplied checks
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1855 (save-excursion (checkdoc-run-hooks 'checkdoc-style-hooks fp e))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1856 ;; Done!
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1857 )))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1858
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1859 (defun checkdoc-defun-info nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1860 "Return a list of details about the current sexp.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1861 It is a list of the form:
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1862 (NAME VARIABLE INTERACTIVE NODOCPARAMS PARAMETERS ...)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1863 where NAME is the name, VARIABLE is t if this is a `defvar',
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1864 INTERACTIVE is nil if this is not an interactive function, otherwise
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1865 it is the position of the `interactive' call, and PARAMETERS is a
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1866 string which is the name of each variable in the function's argument
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1867 list. The NODOCPARAMS is a sublist of parameters specified by a checkdoc
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1868 comment for a given defun. If the first element is not a string, then
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1869 the token checkdoc-order: <TOKEN> exists, and TOKEN is a symbol read
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1870 from the comment."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1871 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1872 (beginning-of-defun)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1873 (let ((defun (looking-at "(def\\(un\\|macro\\|subst\\|advice\\)"))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1874 (is-advice (looking-at "(defadvice"))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1875 (lst nil)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1876 (ret nil)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1877 (oo (make-vector 3 0))) ;substitute obarray for `read'
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1878 (forward-char 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1879 (forward-sexp 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1880 (skip-chars-forward " \n\t")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1881 (setq ret
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1882 (list (buffer-substring-no-properties
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1883 (point) (progn (forward-sexp 1) (point)))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1884 (if (not defun)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1885 (setq ret (cons t ret))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1886 ;; The variable spot
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1887 (setq ret (cons nil ret))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1888 ;; Interactive
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1889 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1890 (setq ret (cons
33495
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
1891 (re-search-forward "^\\s-*(interactive"
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1892 (save-excursion (end-of-defun) (point))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1893 t)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1894 ret)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1895 (skip-chars-forward " \t\n")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1896 (let ((bss (buffer-substring (point) (save-excursion (forward-sexp 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1897 (point))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1898 ;; Overload th main obarray so read doesn't intern the
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1899 ;; local symbols of the function we are checking.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1900 ;; Without this we end up cluttering the symbol space w/
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1901 ;; useless symbols.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1902 (obarray oo))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1903 ;; Ok, check for checkdoc parameter comment here
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1904 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1905 (setq ret
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1906 (cons
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1907 (let ((sl1 nil))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1908 (if (re-search-forward ";\\s-+checkdoc-order:\\s-+"
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1909 (save-excursion (end-of-defun)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1910 (point))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1911 t)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1912 (setq sl1 (list (cond ((looking-at "nil") 'no)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1913 ((looking-at "t") 'yes)))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1914 (if (re-search-forward ";\\s-+checkdoc-params:\\s-+"
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1915 (save-excursion (end-of-defun)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1916 (point))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1917 t)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1918 (let ((sl nil))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1919 (goto-char (match-end 0))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1920 (condition-case nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1921 (setq lst (read (current-buffer)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1922 (error (setq lst nil))) ; error in text
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1923 (if (not (listp lst)) ; not a list of args
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1924 (setq lst (list lst)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1925 (if (and lst (not (symbolp (car lst)))) ;weird arg
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1926 (setq lst nil))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1927 (while lst
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1928 (setq sl (cons (symbol-name (car lst)) sl)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1929 lst (cdr lst)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1930 (setq sl1 (append sl1 sl))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1931 sl1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1932 ret)))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1933 ;; Read the list of parameters, but do not put the symbols in
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1934 ;; the standard obarray.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1935 (setq lst (read bss)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1936 ;; This is because read will intern nil if it doesn't into the
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1937 ;; new obarray.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1938 (if (not (listp lst)) (setq lst nil))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1939 (if is-advice nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1940 (while lst
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1941 (setq ret (cons (symbol-name (car lst)) ret)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1942 lst (cdr lst)))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1943 (nreverse ret))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1944
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1945 (defun checkdoc-in-sample-code-p (start limit)
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
1946 "Return non-nil if the current point is in a code fragment.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1947 A code fragment is identified by an open parenthesis followed by a
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1948 symbol which is a valid function or a word in all CAPS, or a parenthesis
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1949 that is quoted with the ' character. Only the region from START to LIMIT
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1950 is is allowed while searching for the bounding parenthesis."
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1951 (save-match-data
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1952 (save-restriction
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1953 (narrow-to-region start limit)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1954 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1955 (and (condition-case nil (progn (up-list 1) t) (error nil))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1956 (condition-case nil (progn (forward-list -1) t) (error nil))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1957 (or (save-excursion (forward-char -1) (looking-at "'("))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1958 (and (looking-at "(\\(\\(\\w\\|[-:_]\\)+\\)[ \t\n;]")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1959 (let ((ms (buffer-substring-no-properties
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1960 (match-beginning 1) (match-end 1))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1961 ;; if this string is function bound, we are in
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1962 ;; sample code. If it has a - or : character in
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1963 ;; the name, then it is probably supposed to be bound
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1964 ;; but isn't yet.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1965 (or (fboundp (intern-soft ms))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1966 (let ((case-fold-search nil))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1967 (string-match "^[A-Z-]+$" ms))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1968 (string-match "\\w[-:_]+\\w" ms))))))))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1969
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1970 (defun checkdoc-in-example-string-p (start limit)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1971 "Return non-nil if the current point is in an \"example string\".
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1972 This string is identified by the characters \\\" surrounding the text.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1973 The text checked is between START and LIMIT."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1974 (save-match-data
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1975 (save-excursion
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1976 (let ((p (point))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1977 (c 0))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1978 (goto-char start)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1979 (while (and (< (point) p) (re-search-forward "\\\\\"" limit t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1980 (setq c (1+ c)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1981 (and (< 0 c) (= (% c 2) 0))))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1982
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1983 (defun checkdoc-proper-noun-region-engine (begin end)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1984 "Check all text between BEGIN and END for lower case proper nouns.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1985 These are Emacs centric proper nouns which should be capitalized for
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1986 consistency. Return an error list if any are not fixed, but
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1987 internally skip over no answers.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1988 If the offending word is in a piece of quoted text, then it is skipped."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1989 (save-excursion
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1990 (let ((case-fold-search nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1991 (errtxt nil) bb be
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1992 (old-syntax-table (syntax-table)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1993 (unwind-protect
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1994 (progn
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1995 (set-syntax-table checkdoc-syntax-table)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1996 (goto-char begin)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1997 (while (re-search-forward checkdoc-proper-noun-regexp end t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1998 (let ((text (match-string 1))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
1999 (b (match-beginning 1))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2000 (e (match-end 1)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2001 (if (and (not (save-excursion
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2002 (goto-char b)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2003 (forward-char -1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2004 (looking-at "`\\|\"\\|\\.\\|\\\\")))
23192
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2005 ;; surrounded by /, as in a URL or filename: /emacs/
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2006 (not (and (= ?/ (char-after e))
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2007 (= ?/ (char-before b))))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2008 (not (checkdoc-in-example-string-p begin end)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2009 (if (checkdoc-autofix-ask-replace
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2010 b e (format "Text %s should be capitalized. Fix? "
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2011 text)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2012 (capitalize text) t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2013 nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2014 (if errtxt
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2015 ;; If there is already an error, then generate
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2016 ;; the warning output if applicable
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2017 (if checkdoc-generate-compile-warnings-flag
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2018 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2019 (format
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2020 "Name %s should appear capitalized as %s"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2021 text (capitalize text))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2022 b e))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2023 (setq errtxt
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2024 (format
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2025 "Name %s should appear capitalized as %s"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2026 text (capitalize text))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2027 bb b be e)))))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2028 (set-syntax-table old-syntax-table))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2029 (if errtxt (checkdoc-create-error errtxt bb be)))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2030
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2031 (defun checkdoc-sentencespace-region-engine (begin end)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2032 "Make sure all sentences have double spaces between BEGIN and END."
23192
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2033 (if sentence-end-double-space
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2034 (save-excursion
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2035 (let ((case-fold-search nil)
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2036 (errtxt nil) bb be
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2037 (old-syntax-table (syntax-table)))
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2038 (unwind-protect
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2039 (progn
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2040 (set-syntax-table checkdoc-syntax-table)
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2041 (goto-char begin)
40291
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2042 (while (re-search-forward "[^ .0-9]\\(\\. \\)[^ \n]" end t)
23192
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2043 (let ((b (match-beginning 1))
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2044 (e (match-end 1)))
40291
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2045 (unless (or (checkdoc-in-sample-code-p begin end)
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2046 (checkdoc-in-example-string-p begin end)
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2047 (save-excursion
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2048 (goto-char b)
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2049 (condition-case nil
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2050 (progn
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2051 (forward-sexp -1)
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2052 ;; piece of an abbreviation
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2053 (looking-at
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2054 "\\([a-z]\\|[iI]\\.?e\\|[eE]\\.?g\\)\\."))
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2055 (error t))))
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2056 (if (checkdoc-autofix-ask-replace
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2057 b e
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2058 "There should be two spaces after a period. Fix? "
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2059 ". ")
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2060 nil
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2061 (if errtxt
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2062 ;; If there is already an error, then generate
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2063 ;; the warning output if applicable
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2064 (if checkdoc-generate-compile-warnings-flag
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2065 (checkdoc-create-error
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2066 "There should be two spaces after a period"
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2067 b e))
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2068 (setq errtxt
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2069 "There should be two spaces after a period"
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2070 bb b be e)))))))
23192
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2071 (set-syntax-table old-syntax-table))
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2072 (if errtxt (checkdoc-create-error errtxt bb be))))))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2073
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2074 ;;; Ispell engine
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2075 ;;
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2076 (eval-when-compile (require 'ispell))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2077
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2078 (defun checkdoc-ispell-init ()
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
2079 "Initialize Ispell process (default version) with Lisp words.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2080 The words used are from `checkdoc-ispell-lisp-words'. If `ispell'
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2081 cannot be loaded, then set `checkdoc-spellcheck-documentation-flag' to
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2082 nil."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2083 (require 'ispell)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2084 (if (not (symbol-value 'ispell-process)) ;Silence byteCompiler
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2085 (condition-case nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2086 (progn
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2087 (ispell-buffer-local-words)
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
2088 ;; This code copied in part from ispell.el Emacs 19.34
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2089 (let ((w checkdoc-ispell-lisp-words))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2090 (while w
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2091 (process-send-string
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2092 ;; Silence byte compiler
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2093 (symbol-value 'ispell-process)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2094 (concat "@" (car w) "\n"))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2095 (setq w (cdr w)))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2096 (error (setq checkdoc-spellcheck-documentation-flag nil)))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2097
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2098 (defun checkdoc-ispell-docstring-engine (end)
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
2099 "Run the Ispell tools on the doc string between point and END.
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
2100 Since Ispell isn't Lisp-smart, we must pre-process the doc string
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
2101 before using the Ispell engine on it."
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2102 (if (or (not checkdoc-spellcheck-documentation-flag)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2103 ;; If the user wants no questions or fixing, then we must
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2104 ;; disable spell checking as not useful.
50330
e3d87b72b575 (checkdoc-display-status-buffer): Fix docstring.
Juanma Barranquero <lekktu@gmail.com>
parents: 49621
diff changeset
2105 (not checkdoc-autofix-flag)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2106 (eq checkdoc-autofix-flag 'never))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2107 nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2108 (checkdoc-ispell-init)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2109 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2110 (skip-chars-forward "^a-zA-Z")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2111 (let ((word nil) (sym nil) (case-fold-search nil) (err nil))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2112 (while (and (not err) (< (point) end))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2113 (if (save-excursion (forward-char -1) (looking-at "[('`]"))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2114 ;; Skip lists describing meta-syntax, or bound variables
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2115 (forward-sexp 1)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2116 (setq word (buffer-substring-no-properties
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2117 (point) (progn
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2118 (skip-chars-forward "a-zA-Z-")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2119 (point)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2120 sym (intern-soft word))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2121 (if (and sym (or (boundp sym) (fboundp sym)))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2122 ;; This is probably repetitive in most cases, but not always.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2123 nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2124 ;; Find out how we spell-check this word.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2125 (if (or
20603
24dda0afd915 Added some more comments in the commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 20085
diff changeset
2126 ;; All caps w/ option th, or s tacked on the end
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2127 ;; for pluralization or numberthness.
20603
24dda0afd915 Added some more comments in the commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 20085
diff changeset
2128 (string-match "^[A-Z][A-Z]+\\(s\\|th\\)?$" word)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2129 (looking-at "}") ; a keymap expression
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2130 )
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2131 nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2132 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2133 (if (not (eq checkdoc-autofix-flag 'never))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2134 (let ((lk last-input-event))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2135 (ispell-word nil t)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2136 (if (not (equal last-input-event lk))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2137 (progn
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2138 (sit-for 0)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2139 (message "Continuing..."))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2140 ;; Nothing here.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2141 )))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2142 (skip-chars-forward "^a-zA-Z"))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2143 err))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2144
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2145 ;;; Rogue space checking engine
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2146 ;;
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2147 (defun checkdoc-rogue-space-check-engine (&optional start end interact)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2148 "Return a message list if there is a line with white space at the end.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2149 If `checkdoc-autofix-flag' permits, delete that whitespace instead.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2150 If optional arguments START and END are non nil, bound the check to
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2151 this region.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2152 Optional argument INTERACT may permit the user to fix problems on the fly."
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2153 (let ((p (point))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2154 (msg nil) s e (f nil))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2155 (if (not start) (setq start (point-min)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2156 ;; If end is nil, it means end of buffer to search anyway
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2157 (or
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2158 ;; Check for an error if `? ' or `?\ ' is used at the end of a line.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2159 ;; (It's dangerous)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2160 (progn
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2161 (goto-char start)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2162 (while (and (not msg) (re-search-forward "\\?\\\\?[ \t][ \t]*$" end t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2163 (setq msg
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2164 "Don't use `? ' at the end of a line. \
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2165 News agents may remove it"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2166 s (match-beginning 0) e (match-end 0) f t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2167 ;; If interactive is passed down, give them a chance to fix things.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2168 (if (and interact (y-or-n-p (concat msg ". Fix? ")))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2169 (progn
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2170 (checkdoc-recursive-edit msg)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2171 (setq msg nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2172 (goto-char s)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2173 (beginning-of-line)))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2174 ;; Check for, and potentially remove whitespace appearing at the
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2175 ;; end of different lines.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2176 (progn
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2177 (goto-char start)
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
2178 ;; There is no documentation in the Emacs Lisp manual about this check,
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2179 ;; it is intended to help clean up messy code and reduce the file size.
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2180 (while (and (not msg) (re-search-forward "[^ \t\n;]\\([ \t]+\\)$" end t))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2181 ;; This is not a complex activity
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2182 (if (checkdoc-autofix-ask-replace
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2183 (match-beginning 1) (match-end 1)
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
2184 "White space at end of line. Remove? " "")
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2185 nil
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2186 (setq msg "White space found at end of line"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2187 s (match-beginning 1) e (match-end 1))))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2188 ;; Return an error and leave the cursor at that spot, or restore
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2189 ;; the cursor.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2190 (if msg
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2191 (checkdoc-create-error msg s e f)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2192 (goto-char p)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2193 nil)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2194
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2195 ;;; Comment checking engine
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2196 ;;
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2197 (eval-when-compile
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2198 ;; We must load this to:
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2199 ;; a) get symbols for compile and
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2200 ;; b) determine if we have lm-history symbol which doesn't always exist
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2201 (require 'lisp-mnt))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2202
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2203 (defun checkdoc-file-comments-engine ()
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2204 "Return a message list if this file does not match the Emacs standard.
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2205 This checks for style only, such as the first line, Commentary:,
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2206 Code:, and others referenced in the style guide."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2207 (if (featurep 'lisp-mnt)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2208 nil
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2209 (require 'lisp-mnt)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2210 ;; Old XEmacs don't have `lm-commentary-mark'
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2211 (if (and (not (fboundp 'lm-commentary-mark)) (boundp 'lm-commentary))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2212 (defalias 'lm-commentary-mark 'lm-commentary)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2213 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2214 (let* ((f1 (file-name-nondirectory (buffer-file-name)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2215 (fn (file-name-sans-extension f1))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2216 (fe (substring f1 (length fn)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2217 (err nil))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2218 (goto-char (point-min))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2219 ;; This file has been set up where ERR is a variable. Each check is
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2220 ;; asked, and the function will make sure that if the user does not
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2221 ;; auto-fix some error, that we still move on to the next auto-fix,
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2222 ;; AND we remember the past errors.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2223 (setq
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2224 err
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2225 ;; Lisp Maintenance checks first
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2226 ;; Was: (lm-verify) -> not flexible enough for some people
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2227 ;; * Summary at the beginning of the file:
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2228 (if (not (lm-summary))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2229 ;; This certifies as very complex so always ask unless
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2230 ;; it's set to never
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2231 (if (checkdoc-y-or-n-p "There is no first line summary! Add one? ")
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2232 (progn
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2233 (goto-char (point-min))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2234 (insert ";;; " fn fe " --- " (read-string "Summary: ") "\n"))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2235 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2236 "The first line should be of the form: \";;; package --- Summary\""
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2237 (point-min) (save-excursion (goto-char (point-min)) (end-of-line)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2238 (point))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2239 nil))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2240 (setq
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2241 err
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2242 (or
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2243 ;; * Commentary Section
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2244 (if (not (lm-commentary-mark))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2245 (progn
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2246 (goto-char (point-min))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2247 (cond
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2248 ((re-search-forward
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2249 "write\\s-+to\\s-+the\\s-+Free Software Foundation, Inc."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2250 nil t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2251 (re-search-forward "^;;\\s-*\n\\|^\n" nil t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2252 ((or (re-search-forward "^;;; History" nil t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2253 (re-search-forward "^;;; Code" nil t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2254 (re-search-forward "^(require" nil t)
40926
14c471312660 (checkdoc-file-comments-engine):
Richard M. Stallman <rms@gnu.org>
parents: 40291
diff changeset
2255 (re-search-forward "^(" nil t))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2256 (beginning-of-line)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2257 (if (checkdoc-y-or-n-p
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2258 "You should have a \";;; Commentary:\", add one? ")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2259 (insert "\n;;; Commentary:\n;; \n\n")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2260 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2261 "You should have a section marked \";;; Commentary:\""
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2262 nil nil t)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2263 nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2264 err))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2265 (setq
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2266 err
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2267 (or
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2268 ;; * History section. Say nothing if there is a file ChangeLog
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2269 (if (or (not checkdoc-force-history-flag)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2270 (file-exists-p "ChangeLog")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2271 (file-exists-p "../ChangeLog")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2272 (let ((fn 'lm-history-mark)) ;bestill byte-compiler
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2273 (and (fboundp fn) (funcall fn))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2274 nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2275 (progn
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2276 (goto-char (or (lm-commentary-mark) (point-min)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2277 (cond
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2278 ((re-search-forward
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2279 "write\\s-+to\\s-+the\\s-+Free Software Foundation, Inc."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2280 nil t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2281 (re-search-forward "^;;\\s-*\n\\|^\n" nil t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2282 ((or (re-search-forward "^;;; Code" nil t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2283 (re-search-forward "^(require" nil t)
40926
14c471312660 (checkdoc-file-comments-engine):
Richard M. Stallman <rms@gnu.org>
parents: 40291
diff changeset
2284 (re-search-forward "^(" nil t))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2285 (beginning-of-line)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2286 (if (checkdoc-y-or-n-p
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2287 "You should have a \";;; History:\", add one? ")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2288 (insert "\n;;; History:\n;; \n\n")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2289 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2290 "You should have a section marked \";;; History:\" or use a ChangeLog"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2291 (point) nil))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2292 err))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2293 (setq
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2294 err
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2295 (or
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2296 ;; * Code section
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2297 (if (not (lm-code-mark))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2298 (let ((cont t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2299 (goto-char (point-min))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2300 (while (and cont (re-search-forward "^(" nil t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2301 (setq cont (looking-at "require\\s-+")))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2302 (if (and (not cont)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2303 (checkdoc-y-or-n-p
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2304 "There is no ;;; Code: marker. Insert one? "))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2305 (progn (beginning-of-line)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2306 (insert ";;; Code:\n")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2307 nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2308 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2309 "You should have a section marked \";;; Code:\""
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2310 (point) nil)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2311 nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2312 err))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2313 (setq
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2314 err
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2315 (or
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2316 ;; * A footer. Not compartmentalized from lm-verify: too bad.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2317 ;; The following is partially clipped from lm-verify
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2318 (save-excursion
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2319 (goto-char (point-max))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2320 (if (not (re-search-backward
64182
176ffa79bdd8 (checkdoc-proper-noun-list):
Richard M. Stallman <rms@gnu.org>
parents: 64085
diff changeset
2321 (concat "^;;;[ \t]+" (regexp-quote fn) "\\(" (regexp-quote fe)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2322 "\\)?[ \t]+ends here[ \t]*$"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2323 "\\|^;;;[ \t]+ End of file[ \t]+"
64182
176ffa79bdd8 (checkdoc-proper-noun-list):
Richard M. Stallman <rms@gnu.org>
parents: 64085
diff changeset
2324 (regexp-quote fn) "\\(" (regexp-quote fe) "\\)?")
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2325 nil t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2326 (if (checkdoc-y-or-n-p "No identifiable footer! Add one? ")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2327 (progn
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2328 (goto-char (point-max))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2329 (insert "\n(provide '" fn ")\n\n;;; " fn fe " ends here\n"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2330 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2331 (format "The footer should be: (provide '%s)\\n;;; %s%s ends here"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2332 fn fn fe)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2333 (1- (point-max)) (point-max)))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2334 err))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2335 ;; The below checks will not return errors if the user says NO
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2336
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2337 ;; Let's spellcheck the commentary section. This is the only
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2338 ;; section that is easy to pick out, and it is also the most
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2339 ;; visible section (with the finder).
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2340 (let ((cm (lm-commentary-mark)))
51156
46ef9a326558 (checkdoc-file-comments-engine): Use
Lute Kamstra <lute@gnu.org>
parents: 50330
diff changeset
2341 (when cm
46ef9a326558 (checkdoc-file-comments-engine): Use
Lute Kamstra <lute@gnu.org>
parents: 50330
diff changeset
2342 (save-excursion
46ef9a326558 (checkdoc-file-comments-engine): Use
Lute Kamstra <lute@gnu.org>
parents: 50330
diff changeset
2343 (goto-char cm)
46ef9a326558 (checkdoc-file-comments-engine): Use
Lute Kamstra <lute@gnu.org>
parents: 50330
diff changeset
2344 (let ((e (copy-marker (lm-commentary-end))))
46ef9a326558 (checkdoc-file-comments-engine): Use
Lute Kamstra <lute@gnu.org>
parents: 50330
diff changeset
2345 ;; Since the comments talk about Lisp, use the
46ef9a326558 (checkdoc-file-comments-engine): Use
Lute Kamstra <lute@gnu.org>
parents: 50330
diff changeset
2346 ;; specialized spell-checker we also used for doc
46ef9a326558 (checkdoc-file-comments-engine): Use
Lute Kamstra <lute@gnu.org>
parents: 50330
diff changeset
2347 ;; strings.
46ef9a326558 (checkdoc-file-comments-engine): Use
Lute Kamstra <lute@gnu.org>
parents: 50330
diff changeset
2348 (checkdoc-sentencespace-region-engine (point) e)
46ef9a326558 (checkdoc-file-comments-engine): Use
Lute Kamstra <lute@gnu.org>
parents: 50330
diff changeset
2349 (checkdoc-proper-noun-region-engine (point) e)
46ef9a326558 (checkdoc-file-comments-engine): Use
Lute Kamstra <lute@gnu.org>
parents: 50330
diff changeset
2350 (checkdoc-ispell-docstring-engine e)))))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2351 (setq
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2352 err
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2353 (or
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2354 ;; Generic Full-file checks (should be comment related)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2355 (checkdoc-run-hooks 'checkdoc-comment-style-hooks)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2356 err))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2357 ;; Done with full file comment checks
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2358 err)))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2359
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2360 (defun checkdoc-outside-major-sexp ()
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2361 "Return t if point is outside the bounds of a valid sexp."
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2362 (save-match-data
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2363 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2364 (let ((p (point)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2365 (or (progn (beginning-of-defun) (bobp))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2366 (progn (end-of-defun) (< (point) p)))))))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2367
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2368 ;;; `error' and `message' text verifier.
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2369 ;;
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2370 (defun checkdoc-message-text-search (&optional beg end)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2371 "Search between BEG and END for a style error with message text.
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2372 Optional arguments BEG and END represent the boundary of the check.
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2373 The default boundary is the entire buffer."
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2374 (let ((e nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2375 (type nil))
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2376 (if (not (or beg end)) (setq beg (point-min) end (point-max)))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2377 (goto-char beg)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2378 (while (setq type (checkdoc-message-text-next-string end))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2379 (setq e (checkdoc-message-text-engine type)))
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2380 e))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48943
diff changeset
2381
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2382 (defun checkdoc-message-text-next-string (end)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2383 "Move cursor to the next checkable message string after point.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2384 Return the message classification.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2385 Argument END is the maximum bounds to search in."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2386 (let ((return nil))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2387 (while (and (not return)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2388 (re-search-forward
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2389 "(\\s-*\\(\\(\\w\\|\\s_\\)*error\\|\
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2390 \\(\\w\\|\\s_\\)*y-or-n-p\\(-with-timeout\\)?\
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2391 \\|checkdoc-autofix-ask-replace\\)[ \t\n]+" end t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2392 (let* ((fn (match-string 1))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2393 (type (cond ((string-match "error" fn)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2394 'error)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2395 (t 'y-or-n-p))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2396 (if (string-match "checkdoc-autofix-ask-replace" fn)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2397 (progn (forward-sexp 2)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2398 (skip-chars-forward " \t\n")))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2399 (if (and (eq type 'y-or-n-p)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2400 (looking-at "(format[ \t\n]+"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2401 (goto-char (match-end 0)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2402 (skip-chars-forward " \t\n")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2403 (if (not (looking-at "\""))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2404 nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2405 (setq return type))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2406 return))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2407
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2408 (defun checkdoc-message-text-engine (&optional type)
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2409 "Return or fix errors found in strings passed to a message display function.
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2410 According to the documentation for the function `error', the error list
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2411 should not end with a period, and should start with a capital letter.
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2412 The function `y-or-n-p' has similar constraints.
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2413 Argument TYPE specifies the type of question, such as `error or `y-or-n-p."
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2414 ;; If type is nil, then attempt to derive it.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2415 (if (not type)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2416 (save-excursion
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2417 (up-list -1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2418 (if (looking-at "(format")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2419 (up-list -1))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2420 (setq type
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2421 (cond ((looking-at "(error")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2422 'error)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2423 (t 'y-or-n-p)))))
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2424 (let ((case-fold-search nil))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2425 (or
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2426 ;; From the documentation of the symbol `error':
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2427 ;; In Emacs, the convention is that error messages start with a capital
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2428 ;; letter but *do not* end with a period. Please follow this convention
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2429 ;; for the sake of consistency.
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2430 (if (and (save-excursion (forward-char 1)
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2431 (looking-at "[a-z]\\w+"))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2432 (not (checkdoc-autofix-ask-replace
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2433 (match-beginning 0) (match-end 0)
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2434 "Capitalize your message text? "
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2435 (capitalize (match-string 0))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2436 t)))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2437 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2438 "Messages should start with a capital letter"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2439 (match-beginning 0) (match-end 0))
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2440 nil)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2441 ;; In general, sentences should have two spaces after the period.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2442 (checkdoc-sentencespace-region-engine (point)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2443 (save-excursion (forward-sexp 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2444 (point)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2445 ;; Look for proper nouns in this region too.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2446 (checkdoc-proper-noun-region-engine (point)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2447 (save-excursion (forward-sexp 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2448 (point)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2449 ;; Here are message type specific questions.
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2450 (if (and (eq type 'error)
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2451 (save-excursion (forward-sexp 1)
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2452 (forward-char -2)
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2453 (looking-at "\\."))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2454 (not (checkdoc-autofix-ask-replace (match-beginning 0)
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2455 (match-end 0)
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2456 "Remove period from error? "
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2457 ""
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2458 t)))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2459 (checkdoc-create-error
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2460 "Error messages should *not* end with a period"
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2461 (match-beginning 0) (match-end 0))
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2462 nil)
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2463 ;; `y-or-n-p' documentation explicitly says:
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2464 ;; It should end in a space; `y-or-n-p' adds `(y or n) ' to it.
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2465 ;; I added the ? requirement. Without it, it is unclear that we
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2466 ;; ask a question and it appears to be an undocumented style.
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2467 (if (eq type 'y-or-n-p)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2468 (if (not (save-excursion (forward-sexp 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2469 (forward-char -3)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2470 (not (looking-at "\\? "))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2471 nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2472 (if (save-excursion (forward-sexp 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2473 (forward-char -2)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2474 (looking-at "\\?"))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2475 ;; If we see a ?, then replace with "? ".
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2476 (if (checkdoc-autofix-ask-replace
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2477 (match-beginning 0) (match-end 0)
26615
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
2478 "`y-or-n-p' argument should end with \"? \". Fix? "
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2479 "? " t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2480 nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2481 (checkdoc-create-error
26615
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
2482 "`y-or-n-p' argument should end with \"? \""
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2483 (match-beginning 0) (match-end 0)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2484 (if (save-excursion (forward-sexp 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2485 (forward-char -2)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2486 (looking-at " "))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2487 (if (checkdoc-autofix-ask-replace
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2488 (match-beginning 0) (match-end 0)
26615
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
2489 "`y-or-n-p' argument should end with \"? \". Fix? "
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2490 "? " t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2491 nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2492 (checkdoc-create-error
26615
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
2493 "`y-or-n-p' argument should end with \"? \""
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2494 (match-beginning 0) (match-end 0)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2495 (if (and ;; if this isn't true, we have a problem.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2496 (save-excursion (forward-sexp 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2497 (forward-char -1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2498 (looking-at "\""))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2499 (checkdoc-autofix-ask-replace
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2500 (match-beginning 0) (match-end 0)
26615
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
2501 "`y-or-n-p' argument should end with \"? \". Fix? "
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2502 "? \"" t))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2503 nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2504 (checkdoc-create-error
26615
1d769c66f407 (checkdoc-this-string-valid-engine):
Richard M. Stallman <rms@gnu.org>
parents: 25697
diff changeset
2505 "`y-or-n-p' argument should end with \"? \""
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2506 (match-beginning 0) (match-end 0)))))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2507 ;; Now, let's just run the spell checker on this guy.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2508 (checkdoc-ispell-docstring-engine (save-excursion (forward-sexp 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2509 (point)))
22111
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2510 )))
38f78542051a Updated with latest version. Changes include:
Eric M. Ludlam <zappo@gnu.org>
parents: 21651
diff changeset
2511
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2512 ;;; Auto-fix helper functions
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2513 ;;
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2514 (defun checkdoc-y-or-n-p (question)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2515 "Like `y-or-n-p', but pays attention to `checkdoc-autofix-flag'.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2516 Argument QUESTION is the prompt passed to `y-or-n-p'."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2517 (prog1
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2518 (if (or (not checkdoc-autofix-flag)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2519 (eq checkdoc-autofix-flag 'never))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2520 nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2521 (y-or-n-p question))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2522 (if (eq checkdoc-autofix-flag 'automatic-then-never)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2523 (setq checkdoc-autofix-flag 'never))))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2524
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2525 (defun checkdoc-autofix-ask-replace (start end question replacewith
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2526 &optional complex)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2527 "Highlight between START and END and queries the user with QUESTION.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2528 If the user says yes, or if `checkdoc-autofix-flag' permits, replace
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2529 the region marked by START and END with REPLACEWITH. If optional flag
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2530 COMPLEX is non-nil, then we may ask the user a question. See the
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2531 documentation for `checkdoc-autofix-flag' for details.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2532
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2533 If a section is auto-replaced without asking the user, this function
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2534 will pause near the fixed code so the user will briefly see what
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2535 happened.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2536
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2537 This function returns non-nil if the text was replaced.
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2538
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2539 This function will not modify `match-data'."
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2540 (if (and checkdoc-autofix-flag
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2541 (not (eq checkdoc-autofix-flag 'never)))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2542 (let ((o (checkdoc-make-overlay start end))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2543 (ret nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2544 (md (match-data)))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2545 (unwind-protect
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2546 (progn
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2547 (checkdoc-overlay-put o 'face 'highlight)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2548 (if (or (eq checkdoc-autofix-flag 'automatic)
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2549 (eq checkdoc-autofix-flag 'automatic-then-never)
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2550 (and (eq checkdoc-autofix-flag 'semiautomatic)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2551 (not complex))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2552 (and (or (eq checkdoc-autofix-flag 'query) complex)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2553 (y-or-n-p question)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2554 (save-excursion
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2555 (goto-char start)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2556 ;; On the off chance this is automatic, display
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2557 ;; the question anyway so the user knows what's
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2558 ;; going on.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2559 (if checkdoc-bouncy-flag (message "%s -> done" question))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2560 (delete-region start end)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2561 (insert replacewith)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2562 (if checkdoc-bouncy-flag (sit-for 0))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2563 (setq ret t)))
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2564 (checkdoc-delete-overlay o)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2565 (set-match-data md))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2566 (checkdoc-delete-overlay o)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2567 (set-match-data md))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2568 (if (eq checkdoc-autofix-flag 'automatic-then-never)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2569 (setq checkdoc-autofix-flag 'never))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2570 ret)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2571
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2572 ;;; Warning management
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2573 ;;
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2574 (defvar checkdoc-output-font-lock-keywords
55110
9454ec4dffea (checkdoc-output-error-regex-alist): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55060
diff changeset
2575 '(("^\\*\\*\\* \\(.+\\.el\\): \\([^ \n]+\\)"
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2576 (1 font-lock-function-name-face)
55110
9454ec4dffea (checkdoc-output-error-regex-alist): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55060
diff changeset
2577 (2 font-lock-comment-face)))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2578 "Keywords used to highlight a checkdoc diagnostic buffer.")
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2579
55110
9454ec4dffea (checkdoc-output-error-regex-alist): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55060
diff changeset
2580 (defvar checkdoc-output-error-regex-alist
9454ec4dffea (checkdoc-output-error-regex-alist): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55060
diff changeset
2581 '(("^\\(.+\\.el\\):\\([0-9]+\\): " 1 2)))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2582
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2583 (defvar checkdoc-pending-errors nil
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2584 "Non-nil when there are errors that have not been displayed yet.")
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2585
55110
9454ec4dffea (checkdoc-output-error-regex-alist): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55060
diff changeset
2586 (define-derived-mode checkdoc-output-mode compilation-mode "Checkdoc"
9454ec4dffea (checkdoc-output-error-regex-alist): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55060
diff changeset
2587 "Set up the major mode for the buffer containing the list of errors."
9454ec4dffea (checkdoc-output-error-regex-alist): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55060
diff changeset
2588 (set (make-local-variable 'compilation-error-regexp-alist)
9454ec4dffea (checkdoc-output-error-regex-alist): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55060
diff changeset
2589 checkdoc-output-error-regex-alist)
9454ec4dffea (checkdoc-output-error-regex-alist): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55060
diff changeset
2590 (set (make-local-variable 'compilation-mode-font-lock-keywords)
9454ec4dffea (checkdoc-output-error-regex-alist): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55060
diff changeset
2591 checkdoc-output-font-lock-keywords))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2592
23192
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2593 (defun checkdoc-buffer-label ()
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2594 "The name to use for a checkdoc buffer in the error list."
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2595 (if (buffer-file-name)
55060
4a1324ad659c (checkdoc-output-mode): Make it a normal major mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54873
diff changeset
2596 (file-relative-name (buffer-file-name))
23192
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2597 (concat "#<buffer "(buffer-name) ">")))
1ea9db09a678 (checkdoc-buffer-label): New function.
Eric M. Ludlam <zappo@gnu.org>
parents: 22674
diff changeset
2598
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2599 (defun checkdoc-start-section (check-type)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2600 "Initialize the checkdoc diagnostic buffer for a pass.
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2601 Create the header so that the string CHECK-TYPE is displayed as the
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2602 function called to create the messages."
55060
4a1324ad659c (checkdoc-output-mode): Make it a normal major mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54873
diff changeset
2603 (let ((dir default-directory)
4a1324ad659c (checkdoc-output-mode): Make it a normal major mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54873
diff changeset
2604 (label (checkdoc-buffer-label)))
4a1324ad659c (checkdoc-output-mode): Make it a normal major mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54873
diff changeset
2605 (with-current-buffer (get-buffer-create checkdoc-diagnostic-buffer)
4a1324ad659c (checkdoc-output-mode): Make it a normal major mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54873
diff changeset
2606 (checkdoc-output-mode)
4a1324ad659c (checkdoc-output-mode): Make it a normal major mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54873
diff changeset
2607 (setq default-directory dir)
4a1324ad659c (checkdoc-output-mode): Make it a normal major mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54873
diff changeset
2608 (goto-char (point-max))
4a1324ad659c (checkdoc-output-mode): Make it a normal major mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54873
diff changeset
2609 (insert "\n\n\C-l\n*** " label ": " check-type " V " checkdoc-version))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2610
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2611 (defun checkdoc-error (point msg)
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2612 "Store POINT and MSG as errors in the checkdoc diagnostic buffer."
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2613 (setq checkdoc-pending-errors t)
55060
4a1324ad659c (checkdoc-output-mode): Make it a normal major mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54873
diff changeset
2614 (let ((text (list "\n" (checkdoc-buffer-label) ":"
4a1324ad659c (checkdoc-output-mode): Make it a normal major mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54873
diff changeset
2615 (int-to-string
4a1324ad659c (checkdoc-output-mode): Make it a normal major mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54873
diff changeset
2616 (count-lines (point-min) (or point (point-min))))
4a1324ad659c (checkdoc-output-mode): Make it a normal major mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54873
diff changeset
2617 ": " msg)))
4a1324ad659c (checkdoc-output-mode): Make it a normal major mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54873
diff changeset
2618 (with-current-buffer (get-buffer checkdoc-diagnostic-buffer)
4a1324ad659c (checkdoc-output-mode): Make it a normal major mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54873
diff changeset
2619 (goto-char (point-max))
4a1324ad659c (checkdoc-output-mode): Make it a normal major mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54873
diff changeset
2620 (apply 'insert text))))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2621
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2622 (defun checkdoc-show-diagnostics ()
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2623 "Display the checkdoc diagnostic buffer in a temporary window."
22674
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2624 (if checkdoc-pending-errors
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2625 (let ((b (get-buffer checkdoc-diagnostic-buffer)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2626 (if b (progn (pop-to-buffer b)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2627 (goto-char (point-max))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2628 (re-search-backward "\C-l" nil t)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2629 (beginning-of-line)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2630 (forward-line 1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2631 (recenter 0)))
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2632 (other-window -1)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2633 (setq checkdoc-pending-errors nil)
f72e7540940a (checkdoc): Updated commentary.
Eric M. Ludlam <zappo@gnu.org>
parents: 22579
diff changeset
2634 nil)))
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2635
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2636 (defgroup checkdoc nil
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
2637 "Support for doc string checking in Emacs Lisp."
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2638 :prefix "checkdoc"
21651
86fcccceba7b *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21181
diff changeset
2639 :group 'lisp
86fcccceba7b *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21181
diff changeset
2640 :version "20.3")
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2641
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2642 (custom-add-option 'emacs-lisp-mode-hook
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2643 (lambda () (checkdoc-minor-mode 1)))
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2644
33495
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
2645 (add-to-list 'debug-ignored-errors
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
2646 "Argument `.*' should appear (as .*) in the doc string")
54498
79d56d8a420a (checkdoc-error): Dont' assume point-min == 1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
2647 (add-to-list 'debug-ignored-errors
79d56d8a420a (checkdoc-error): Dont' assume point-min == 1.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
2648 "Lisp symbol `.*' should appear in quotes")
40291
7642548b1466 (checkdoc-eval-defun): Call eval-defun
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39319
diff changeset
2649 (add-to-list 'debug-ignored-errors "Disambiguate .* by preceding .*")
33495
07c7cb89c236 (checkdoc-minor-mode) <defvar>: Remove.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27444
diff changeset
2650
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2651 (provide 'checkdoc)
22195
bab34c7c16fb Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 22111
diff changeset
2652
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51156
diff changeset
2653 ;;; arch-tag: c49a7ec8-3bb7-46f2-bfbc-d5f26e033b26
20085
05408326bad6 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
2654 ;;; checkdoc.el ends here