annotate lisp/emacs-lisp/checkdoc.el @ 42829:07bd6e693cb6

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