diff --git a/config.el b/config.el index fc17ff1..0ac88b4 100644 --- a/config.el +++ b/config.el @@ -79,6 +79,12 @@ ;; ;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how ;; they are implemented. + +;; Use PowerShell for interactive shell buffers. +(setq explicit-shell-file-name "pwsh.exe") +(setq shell-file-name "pwsh.exe") +(setq shell-command-switch "-Command") + (after! org (setq org-hide-emphasis-markers t) (setq org-log-done 'time) @@ -107,41 +113,42 @@ :commands (elisp-autofmt-mode elisp-autofmt-buffer) :hook (emacs-lisp-mode . elisp-autofmt-mode)) - ;; Based off https://github.com/alphapapa/unpackaged.el#ensure-blank-lines-between-headings-and-before-contents ;;;###autoload (defun org-format (&optional prefix) - "Ensure that blank lines exist between headings and between headings and their contents. + "Ensure that blank lines exist between headings and between headings and their contents. With prefix, operate on whole buffer. Ensures that blank lines exist after each headings's drawers." (interactive "P") - (org-map-entries (lambda () - (org-with-wide-buffer - ;; `org-map-entries' narrows the buffer, which prevents us from seeing - ;; newlines before the current heading, so we do this part widened. - (while (not (looking-back "\n\n" nil)) - ;; Insert blank lines before heading. - (insert "\n"))) - (let ((end (org-entry-end-position))) - ;; Insert blank lines before entry content - (forward-line) - (while (and (org-at-planning-p) - (< (point) (point-max))) - ;; Skip planning lines - (forward-line)) - (while (re-search-forward org-drawer-regexp end t) - ;; Skip drawers. You might think that `org-at-drawer-p' would suffice, but - ;; for some reason it doesn't work correctly when operating on hidden text. - ;; This works, taken from `org-agenda-get-some-entry-text'. - (re-search-forward "^[ \t]*:END:.*\n?" end t) - (goto-char (match-end 0))) - (unless (or (= (point) (point-max)) - (org-at-heading-p) - (looking-at-p "\n")) - (insert "\n")))) - t (if prefix - nil - 'tree))) + (org-map-entries + (lambda () + (org-with-wide-buffer + ;; `org-map-entries' narrows the buffer, which prevents us from seeing + ;; newlines before the current heading, so we do this part widened. + (while (not (looking-back "\n\n" nil)) + ;; Insert blank lines before heading. + (insert "\n"))) + (let ((end (org-entry-end-position))) + ;; Insert blank lines before entry content + (forward-line) + (while (and (org-at-planning-p) (< (point) (point-max))) + ;; Skip planning lines + (forward-line)) + (while (re-search-forward org-drawer-regexp end t) + ;; Skip drawers. You might think that `org-at-drawer-p' would suffice, but + ;; for some reason it doesn't work correctly when operating on hidden text. + ;; This works, taken from `org-agenda-get-some-entry-text'. + (re-search-forward "^[ \t]*:END:.*\n?" end t) + (goto-char (match-end 0))) + (unless (or (= (point) (point-max)) + (org-at-heading-p) + (looking-at-p "\n")) + (insert "\n")))) + t + (if prefix + nil + 'tree))) + ;; For elisp-autofmt ;; Local variables: