Emacs: Upcase Sentences 🚀
Here's emacs command to fix letter case of sentences. That is, any letter after a period (full stop), question mark, exclamation, will be capitalized.
This saves you typing. You can keep typing without pressing Shift to type uppercase letters. After you finished typing a paragraph, you can press a button and have the letters capitalized.
put this in your Emacs Init File:
(defun xah-upcase-sentence () "Upcase first letters of sentences of current text block or selection. URL `http://xahlee.info/emacs/emacs/emacs_upcase_sentence.html' Version 2020-12-08" (interactive) (let ($p1 $p2) (if (use-region-p) (setq $p1 (region-beginning) $p2 (region-end)) (save-excursion (if (re-search-backward "\n[ \t]*\n" nil "move") (progn (setq $p1 (point)) (re-search-forward "\n[ \t]*\n")) (setq $p1 (point))) (progn (re-search-forward "\n[ \t]*\n" nil "move") (setq $p2 (point))))) (save-excursion (save-restriction (narrow-to-region $p1 $p2) (let ((case-fold-search nil)) ;; after period or question mark or exclamation (goto-char (point-min)) (while (re-search-forward "\\(\\.\\|\\?\\|!\\)[ \n]+ *\\([a-z]\\)" nil "move") (upcase-region (match-beginning 2) (match-end 2)) (overlay-put (make-overlay (match-beginning 2) (match-end 2)) 'face 'highlight)) ;; after a blank line, after a bullet, or beginning of buffer (goto-char (point-min)) (while (re-search-forward "\\(\\`\\|• \\|\n\n\\)\\([a-z]\\)" nil "move") (upcase-region (match-beginning 2) (match-end 2)) (overlay-put (make-overlay (match-beginning 2) (match-end 2)) 'face 'highlight)) ;; for HTML. first letter after tag (when (or (eq major-mode 'xah-html-mode) (eq major-mode 'html-mode) (eq major-mode 'sgml-mode) (eq major-mode 'nxml-mode) (eq major-mode 'xml-mode) (eq major-mode 'mhtml-mode)) (goto-char (point-min)) (while (re-search-forward "\\(<h[1-6]>[ \n]?\\|<p>[ \n]?\\|<li>\\|<dd>\\|<td>[ \n]?\\|<br ?/?>[ \n]?\\|<figcaption>[ \n]?\\)\\([a-z]\\)" nil "move") (upcase-region (match-beginning 2) (match-end 2)) (overlay-put (make-overlay (match-beginning 2) (match-end 2)) 'face 'highlight))))))))
The following are often useful together: