diff options
author | Stefan Kangas <stefan@marxist.se> | 2021-09-21 19:18:50 +0200 |
---|---|---|
committer | Stefan Kangas <stefan@marxist.se> | 2021-09-21 20:02:19 +0200 |
commit | 1c73c0b33a9b10cdae1316ad9e0ba861af454b66 (patch) | |
tree | 0060fed5ab0415fc38b537ca50a566acbbcf1e53 /lisp/emacs-lisp/checkdoc.el | |
parent | f29aee1d9ad25d55f17372b14969e1645e65aa8c (diff) | |
download | emacs-1c73c0b33a9b10cdae1316ad9e0ba861af454b66.tar.gz emacs-1c73c0b33a9b10cdae1316ad9e0ba861af454b66.tar.bz2 emacs-1c73c0b33a9b10cdae1316ad9e0ba861af454b66.zip |
Add new command 'checkdoc-dired'
* lisp/emacs-lisp/checkdoc.el (checkdoc-dired): New command.
(checkdoc--dired-skip-lines-re): New constant.
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 ;; |