1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-17 10:06:13 +00:00

ispell: Commands to check comments or strings at point or in region

* lisp/textmodes/ispell.el (ispell-comments-and-strings): Accept START
and END arguments, defaulting to active region in interactive calls.
(ispell-comment-or-string-at-point): New command. (bug#6411)
This commit is contained in:
Štěpán Němec 2020-04-08 20:32:51 +02:00
parent 32f4fa80b5
commit 2aefd55904
2 changed files with 33 additions and 7 deletions

View File

@ -381,6 +381,15 @@ take the actual screenshot, and defaults to "ImageMagick import".
The menu-bar Help menu now has a "Show Recent Inputs" item under the
"Describe" sub-menu.
** Ispell
---
*** 'ispell-comments-and-strings' now accepts START and END arguments,
defaulting to active region when used interactively.
---
*** New command 'ispell-comment-or-string-at-point' is provided.
---
** The old non-SMIE indentation of 'sh-mode' has been removed.

View File

@ -44,6 +44,7 @@
;; ispell-buffer
;; ispell-message
;; ispell-comments-and-strings
;; ispell-comment-or-string-at-point
;; ispell-continue
;; ispell-complete-word
;; ispell-complete-word-interior-frag
@ -3580,24 +3581,40 @@ Returns the sum SHIFT due to changes in word replacements."
;;;###autoload
(defun ispell-comments-and-strings ()
"Check comments and strings in the current buffer for spelling errors."
(interactive)
(goto-char (point-min))
(defun ispell-comments-and-strings (&optional start end)
"Check comments and strings in the current buffer for spelling errors.
If called interactively with an active region, check only comments and
strings in the region.
When called from Lisp, START and END buffer positions can be provided
to limit the check."
(interactive (when (use-region-p) (list (region-beginning) (region-end))))
(unless end (setq end (point-max)))
(goto-char (or start (point-min)))
(let (state done)
(while (not done)
(setq done t)
(setq state (parse-partial-sexp (point) (point-max)
nil nil state 'syntax-table))
(setq state (parse-partial-sexp (point) end nil nil state 'syntax-table))
(if (or (nth 3 state) (nth 4 state))
(let ((start (point)))
(setq state (parse-partial-sexp start (point-max)
(setq state (parse-partial-sexp start end
nil nil state 'syntax-table))
(if (or (nth 3 state) (nth 4 state))
(error "Unterminated string or comment"))
(save-excursion
(setq done (not (ispell-region start (point))))))))))
;;;###autoload
(defun ispell-comment-or-string-at-point ()
"Check the comment or string containing point for spelling errors."
(interactive)
(save-excursion
(let ((state (syntax-ppss)))
(if (or (nth 3 state) (nth 4 state))
(ispell-region (nth 8 state)
(progn (parse-partial-sexp (point) (point-max)
nil nil state 'syntax-table)
(point)))
(user-error "Not inside a string or comment")))))
;;;###autoload
(defun ispell-buffer ()