aboutsummaryrefslogtreecommitdiff
path: root/modules/custom-line-paragraph.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-29 04:41:40 -0400
committerCraig Jennings <c@cjennings.net>2026-06-29 04:41:40 -0400
commitca3d447bfd849b54f8f9d74568f3dee1e86c391e (patch)
tree86a1f7d79310cf57ed23b2f5b02be7675badc25e /modules/custom-line-paragraph.el
parenta56a714ce30fe91bd5afd0ba181d0d4bc508a8c0 (diff)
downloaddotemacs-ca3d447bfd849b54f8f9d74568f3dee1e86c391e.tar.gz
dotemacs-ca3d447bfd849b54f8f9d74568f3dee1e86c391e.zip
refactor: split custom-misc.el into focused modules
custom-misc.el was an incoherent grab-bag, so anything small defaulted to landing there. I split its eight commands by concern. Three moved into new modules: custom-format (region/buffer reformat), custom-counts (word and character counts), and custom-text-transform (fraction glyphs). The other three went to existing homes: the previous-buffer toggle to custom-buffer-file, the delimiter jump to custom-line-paragraph, and the align-regexp space advice with its alignment and fill bindings to custom-whitespace. The C-; bindings, which-key labels, and the six test files moved with their functions, and custom-misc.el is deleted. No behavior change: every command keeps its name and its C-; key.
Diffstat (limited to 'modules/custom-line-paragraph.el')
-rw-r--r--modules/custom-line-paragraph.el31
1 files changed, 31 insertions, 0 deletions
diff --git a/modules/custom-line-paragraph.el b/modules/custom-line-paragraph.el
index dd2999c4e..d29d4125b 100644
--- a/modules/custom-line-paragraph.el
+++ b/modules/custom-line-paragraph.el
@@ -166,5 +166,36 @@ If the line is empty or contains only whitespace, abort with a message."
"C-; l r" "remove matching"
"C-; l u" "underscore line"))
+;; --- delimiter jump (formerly in custom-misc.el) ---
+(defun cj/jump-to-matching-paren ()
+ "Jump to the matching delimiter if point is on (or just after) one.
+If not on a delimiter, show a message. Respects the current syntax table."
+ (interactive)
+ (let* ((ca (char-after))
+ (cb (char-before))
+ ;; Check if on opening paren
+ (open-p (and ca (eq (char-syntax ca) ?\()))
+ ;; Check if on or just after closing paren
+ (close-p (or (and ca (eq (char-syntax ca) ?\)))
+ (and cb (eq (char-syntax cb) ?\))))))
+ (cond
+ ;; Jump forward from opening
+ (open-p
+ (condition-case err
+ (forward-sexp)
+ (scan-error
+ (message "No matching delimiter: %s" (error-message-string err)))))
+ ;; Jump backward from closing
+ (close-p
+ (condition-case err
+ (backward-sexp)
+ (scan-error
+ (message "No matching delimiter: %s" (error-message-string err)))))
+ ;; Not on delimiter
+ (t
+ (message "Point is not on a delimiter.")))))
+
+(cj/register-command ")" #'cj/jump-to-matching-paren "jump to paren")
+
(provide 'custom-line-paragraph)
;;; custom-line-paragraph.el ends here.