diff options
Diffstat (limited to 'lisp/emacs-lisp/checkdoc.el')
-rw-r--r-- | lisp/emacs-lisp/checkdoc.el | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el index 07ae8551917..d7975086878 100644 --- a/lisp/emacs-lisp/checkdoc.el +++ b/lisp/emacs-lisp/checkdoc.el @@ -1070,6 +1070,39 @@ space at the end of each line." (if (called-interactively-p 'interactive) (message "Checkdoc: done.")))))) +(defconst checkdoc--dired-skip-lines-re + (rx (or (seq bol + (or ";; Generated from Unicode data files by unidat" + ";; This file is automatically generated from" + ";; Generated by the command ")) + ".el --- automatically extracted autoloads -*- lexical-binding: t -*-" + ";;; lisp/trampver.el. Generated from trampver.el.in by configure.")) + "Regexp that when it matches tells `checkdoc-dired' to skip a file.") + +(defun checkdoc-dired (files) + "In Dired, run `checkdoc' on marked files. +Skip anything that doesn't have the Emacs Lisp library file +extension (\".el\"). +When called from Lisp, FILES is a list of filenames." + (interactive + (list + (delq nil + (mapcar + ;; skip anything that doesn't look like an Emacs Lisp library + (lambda (f) (if (equal (file-name-extension f) "el") f nil)) + (nreverse (dired-map-over-marks (dired-get-filename) nil))))) + dired-mode) + (if (null files) + (error "No files to run checkdoc on") + (save-window-excursion + (dolist (fil files) + (find-file fil) + (unless (and + (goto-char (point-min)) + (re-search-forward checkdoc--dired-skip-lines-re nil t)) + (checkdoc))))) + (message "checkdoc-dired: Successfully checked %d files" (length files))) + ;;; Ispell interface for forcing a spell check ;; |