Mercurial > emacs
comparison lisp/emacs-lisp/checkdoc.el @ 89943:4c90ffeb71c5
Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-15
Merge from emacs--cvs-trunk--0
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-218
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-220
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-221
Restore deleted tagline in etc/TUTORIAL.ru
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-222
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-228
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-229
Remove TeX output files from the archive
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-230
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-247
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-248
src/lisp.h (CYCLE_CHECK): Macro moved from xfaces.c
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-249
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-256
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-258
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-263
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-264
Update from CVS: lispref/display.texi: emacs -> Emacs.
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-265
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-274
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-275
Update from CVS: man/makefile.w32-in: Revert last change
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-276
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-295
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-296
Allow restarting an existing debugger session that's exited
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-297
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-299
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-300
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-327
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-328
Update from CVS: src/.gdbinit (xsymbol): Fix last change.
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-329
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-344
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-345
Tweak source regexps so that building in place won't cause problems
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-346
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-351
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-352
Update from CVS: lisp/flymake.el: New file.
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-353
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-361
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-362
Support " [...]" style defaults in minibuffer-electric-default-mode
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-363
(read-number): Use canonical format for default in prompt.
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-364
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-367
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-368
Improve display-supports-face-attributes-p on non-ttys
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-369
Rewrite face-differs-from-default-p
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-370
Move `display-supports-face-attributes-p' entirely into C code
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-371
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-372
Simplify face-differs-from-default-p; don't consider :stipple.
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-373
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-374
(tty_supports_face_attributes_p): Ensure attributes differ from default
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-375
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-376
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-377
(Fdisplay_supports_face_attributes_p): Work around bootstrapping problem
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-378
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-380
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-381
Face merging cleanups
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-382
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-384
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-385
src/xfaces.c (push_named_merge_point): Return 0 if a cycle is detected
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-386
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-395
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-396
Tweak arch tagging to make build/install-in-place less annoying
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-397
Work around vc-arch problems when building eshell
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-398
Tweak permissions
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-399
Tweak directory permissions
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-400
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-401
More build-in-place tweaking of arch tagging
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-402
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-403
Yet more build-in-place tweaking of arch tagging
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-404
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-409
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-410
Make sure image types are initialized for lookup too
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-411
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-416
Update from CVS
author | Miles Bader <miles@gnu.org> |
---|---|
date | Mon, 28 Jun 2004 07:56:49 +0000 |
parents | 68c22ea6027c 2849e4ae725f |
children | 566253900690 |
comparison
equal
deleted
inserted
replaced
89942:9cb747ae49af | 89943:4c90ffeb71c5 |
---|---|
1244 (define-minor-mode checkdoc-minor-mode | 1244 (define-minor-mode checkdoc-minor-mode |
1245 "Toggle Checkdoc minor mode, a mode for checking Lisp doc strings. | 1245 "Toggle Checkdoc minor mode, a mode for checking Lisp doc strings. |
1246 With prefix ARG, turn Checkdoc minor mode on iff ARG is positive. | 1246 With prefix ARG, turn Checkdoc minor mode on iff ARG is positive. |
1247 | 1247 |
1248 In Checkdoc minor mode, the usual bindings for `eval-defun' which is | 1248 In Checkdoc minor mode, the usual bindings for `eval-defun' which is |
1249 bound to \\<checkdoc-minor-mode-map> \\[checkdoc-eval-defun] and `checkdoc-eval-current-buffer' are overridden to include | 1249 bound to \\<checkdoc-minor-mode-map>\\[checkdoc-eval-defun] and `checkdoc-eval-current-buffer' are overridden to include |
1250 checking of documentation strings. | 1250 checking of documentation strings. |
1251 | 1251 |
1252 \\{checkdoc-minor-mode-map}" | 1252 \\{checkdoc-minor-mode-map}" |
1253 nil " CDoc" nil | 1253 nil " CDoc" nil |
1254 :group 'checkdoc) | 1254 :group 'checkdoc) |
2577 ret))) | 2577 ret))) |
2578 | 2578 |
2579 ;;; Warning management | 2579 ;;; Warning management |
2580 ;; | 2580 ;; |
2581 (defvar checkdoc-output-font-lock-keywords | 2581 (defvar checkdoc-output-font-lock-keywords |
2582 '(("\\(\\w+\\.el\\): \\(\\w+\\)" | 2582 '(("^\\*\\*\\* \\(.+\\.el\\): \\([^ \n]+\\)" |
2583 (1 font-lock-function-name-face) | 2583 (1 font-lock-function-name-face) |
2584 (2 font-lock-comment-face)) | 2584 (2 font-lock-comment-face))) |
2585 ("^\\(\\w+\\.el\\):" 1 font-lock-function-name-face) | |
2586 (":\\([0-9]+\\):" 1 font-lock-constant-face)) | |
2587 "Keywords used to highlight a checkdoc diagnostic buffer.") | 2585 "Keywords used to highlight a checkdoc diagnostic buffer.") |
2588 | 2586 |
2589 (defvar checkdoc-output-mode-map nil | 2587 (defvar checkdoc-output-error-regex-alist |
2590 "Keymap used in `checkdoc-output-mode'.") | 2588 '(("^\\(.+\\.el\\):\\([0-9]+\\): " 1 2))) |
2591 | 2589 |
2592 (defvar checkdoc-pending-errors nil | 2590 (defvar checkdoc-pending-errors nil |
2593 "Non-nil when there are errors that have not been displayed yet.") | 2591 "Non-nil when there are errors that have not been displayed yet.") |
2594 | 2592 |
2595 (if checkdoc-output-mode-map | 2593 (define-derived-mode checkdoc-output-mode compilation-mode "Checkdoc" |
2596 nil | 2594 "Set up the major mode for the buffer containing the list of errors." |
2597 (setq checkdoc-output-mode-map (make-sparse-keymap)) | 2595 (set (make-local-variable 'compilation-error-regexp-alist) |
2598 (if (not (string-match "XEmacs" emacs-version)) | 2596 checkdoc-output-error-regex-alist) |
2599 (define-key checkdoc-output-mode-map [mouse-2] | 2597 (set (make-local-variable 'compilation-mode-font-lock-keywords) |
2600 'checkdoc-find-error)) | 2598 checkdoc-output-font-lock-keywords)) |
2601 (define-key checkdoc-output-mode-map "\C-c\C-c" 'checkdoc-find-error) | |
2602 (define-key checkdoc-output-mode-map "\C-m" 'checkdoc-find-error)) | |
2603 | |
2604 (defun checkdoc-output-mode () | |
2605 "Create and setup the buffer used to maintain checkdoc warnings. | |
2606 \\<checkdoc-output-mode-map>\\[checkdoc-find-error] - Go to this error location." | |
2607 (if (get-buffer checkdoc-diagnostic-buffer) | |
2608 (get-buffer checkdoc-diagnostic-buffer) | |
2609 (save-excursion | |
2610 (set-buffer (get-buffer-create checkdoc-diagnostic-buffer)) | |
2611 (kill-all-local-variables) | |
2612 (setq mode-name "Checkdoc" | |
2613 major-mode 'checkdoc-output-mode) | |
2614 (set (make-local-variable 'font-lock-defaults) | |
2615 '((checkdoc-output-font-lock-keywords) t t ((?- . "w") (?_ . "w")))) | |
2616 (use-local-map checkdoc-output-mode-map) | |
2617 (run-hooks 'checkdoc-output-mode-hook) | |
2618 (current-buffer)))) | |
2619 | |
2620 (defalias 'checkdoc-find-error-mouse 'checkdoc-find-error) | |
2621 (defun checkdoc-find-error (&optional event) | |
2622 "In a checkdoc diagnostic buffer, find the error under point." | |
2623 (interactive (list last-input-event)) | |
2624 (if event (posn-set-point (event-end e))) | |
2625 (beginning-of-line) | |
2626 (if (looking-at "\\(\\(\\w+\\|\\s_\\)+\\.el\\):\\([0-9]+\\):") | |
2627 (let ((l (string-to-int (match-string 3))) | |
2628 (f (match-string 1))) | |
2629 (if (not (get-file-buffer f)) | |
2630 (error "Can't find buffer %s" f)) | |
2631 (switch-to-buffer-other-window (get-file-buffer f)) | |
2632 (goto-line l)))) | |
2633 | 2599 |
2634 (defun checkdoc-buffer-label () | 2600 (defun checkdoc-buffer-label () |
2635 "The name to use for a checkdoc buffer in the error list." | 2601 "The name to use for a checkdoc buffer in the error list." |
2636 (if (buffer-file-name) | 2602 (if (buffer-file-name) |
2637 (file-name-nondirectory (buffer-file-name)) | 2603 (file-relative-name (buffer-file-name)) |
2638 (concat "#<buffer "(buffer-name) ">"))) | 2604 (concat "#<buffer "(buffer-name) ">"))) |
2639 | 2605 |
2640 (defun checkdoc-start-section (check-type) | 2606 (defun checkdoc-start-section (check-type) |
2641 "Initialize the checkdoc diagnostic buffer for a pass. | 2607 "Initialize the checkdoc diagnostic buffer for a pass. |
2642 Create the header so that the string CHECK-TYPE is displayed as the | 2608 Create the header so that the string CHECK-TYPE is displayed as the |
2643 function called to create the messages." | 2609 function called to create the messages." |
2644 (checkdoc-output-to-error-buffer | 2610 (let ((dir default-directory) |
2645 "\n\n\C-l\n*** " | 2611 (label (checkdoc-buffer-label))) |
2646 (checkdoc-buffer-label) ": " check-type " V " checkdoc-version)) | 2612 (with-current-buffer (get-buffer-create checkdoc-diagnostic-buffer) |
2613 (checkdoc-output-mode) | |
2614 (setq default-directory dir) | |
2615 (goto-char (point-max)) | |
2616 (insert "\n\n\C-l\n*** " label ": " check-type " V " checkdoc-version)))) | |
2647 | 2617 |
2648 (defun checkdoc-error (point msg) | 2618 (defun checkdoc-error (point msg) |
2649 "Store POINT and MSG as errors in the checkdoc diagnostic buffer." | 2619 "Store POINT and MSG as errors in the checkdoc diagnostic buffer." |
2650 (setq checkdoc-pending-errors t) | 2620 (setq checkdoc-pending-errors t) |
2651 (checkdoc-output-to-error-buffer | 2621 (let ((text (list "\n" (checkdoc-buffer-label) ":" |
2652 "\n" (checkdoc-buffer-label) ":" | 2622 (int-to-string |
2653 (int-to-string (count-lines (point-min) (or point (point-min)))) ": " | 2623 (count-lines (point-min) (or point (point-min)))) |
2654 msg)) | 2624 ": " msg))) |
2655 | 2625 (with-current-buffer (get-buffer checkdoc-diagnostic-buffer) |
2656 (defun checkdoc-output-to-error-buffer (&rest text) | 2626 (goto-char (point-max)) |
2657 "Place TEXT into the checkdoc diagnostic buffer." | 2627 (apply 'insert text)))) |
2658 (save-excursion | |
2659 (set-buffer (checkdoc-output-mode)) | |
2660 (goto-char (point-max)) | |
2661 (apply 'insert text))) | |
2662 | 2628 |
2663 (defun checkdoc-show-diagnostics () | 2629 (defun checkdoc-show-diagnostics () |
2664 "Display the checkdoc diagnostic buffer in a temporary window." | 2630 "Display the checkdoc diagnostic buffer in a temporary window." |
2665 (if checkdoc-pending-errors | 2631 (if checkdoc-pending-errors |
2666 (let ((b (get-buffer checkdoc-diagnostic-buffer))) | 2632 (let ((b (get-buffer checkdoc-diagnostic-buffer))) |