diff --git a/modules/lang/org/autoload/org.el b/modules/lang/org/autoload/org.el index f1c033344..87085b434 100644 --- a/modules/lang/org/autoload/org.el +++ b/modules/lang/org/autoload/org.el @@ -334,6 +334,24 @@ see how ARG affects this command." (org-clock-in)) ((org-clock-in-last arg)))) +;;;###autoload +(defun +org/reformat-at-point () + "Reformat the element at point. + +If in an org src block, invokes `+format/org-block' if the ':editor format' + module is enabled. +If in an org table, realign the cells with `org-table-align'. +Otherwise, falls back to `org-fill-paragraph' to reflow paragraphs." + (interactive) + (let ((element (org-element-at-point))) + (cond ((org-in-src-block-p nil element) + (unless (modulep! :editor format) + (user-error ":editor format module is disabled, ignoring reformat...")) + (call-interactively #'+format/org-block)) + ((org-at-table-p) + (save-excursion (org-table-align))) + ((call-interactively #'org-fill-paragraph))))) + ;;; Folds ;;;###autoload diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index 84e87380f..d344d57b1 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -1222,7 +1222,7 @@ between the two." :m "[l" #'org-previous-link :m "]c" #'org-babel-next-src-block :m "[c" #'org-babel-previous-src-block - :n "gQ" #'org-fill-paragraph + :n "gQ" #'+org/reformat-at-point ;; sensible vim-esque folding keybinds :n "za" #'+org/toggle-fold :n "zA" #'org-shifttab