From dd809699573c5116a6ad52088d568fcafb3a9261 Mon Sep 17 00:00:00 2001 From: Ashley Duckworth Date: Fri, 22 Jan 2021 13:12:56 -0600 Subject: Add magit and git modes --- config.org | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 98 insertions(+), 2 deletions(-) diff --git a/config.org b/config.org index 8556c33..66a795e 100644 --- a/config.org +++ b/config.org @@ -1156,8 +1156,34 @@ that one item is. (add-hook 'dired-mode-hook #'dired-collapse-mode) #+end_src +** Git :package: + +*** Magit + +#+begin_src emacs-lisp :noweb-ref packages + (straight-use-package 'magit) +#+end_src + +#+begin_src emacs-lisp :noweb-ref bindings + (define-key acdw/leader "g" #'magit-status) +#+end_src + +*** Git file modes + +#+begin_src emacs-lisp :noweb-ref packages + (dolist (feat '(gitattributes-mode + gitconfig-mode + gitignore-mode)) + (straight-use-package feat) + (require feat)) +#+end_src + * Org mode :package: +** Install it with =straight.el= + +I want to use the newest version of Org that I can. + #+begin_src emacs-lisp :noweb-ref packages (straight-use-package 'org) @@ -1166,6 +1192,8 @@ that one item is. (require 'ox-md)) #+end_src +** Basic settings + #+begin_src emacs-lisp :noweb-ref settings (setq-default ;; Where to look for Org files @@ -1191,6 +1219,24 @@ that one item is. org-export-headline-levels 8) #+end_src +** Aesthetics + +*** Prettify some other symbols + +#+begin_src emacs-lisp :noweb-ref functions + (defun acdw/org-mode-prettify () + "Prettify `org-mode'." + (dolist (cell '(("[ ]" . ?☐) ("[X]" . ?☑) ("[-]" . ?◐) + ("#+BEGIN_SRC" . ?✎) ("#+begin_src" . ?✎) + ("#+END_SRC" . ?■) ("#+end_src" . ?■))) + (add-to-list 'prettify-symbols-alist cell :append)) + (prettify-symbols-mode +1)) +#+end_src + +#+begin_src emacs-lisp :noweb-ref hooks + (add-hook 'org-mode-hook #'acdw/org-mode-prettify) +#+end_src + ** Org templates #+begin_src emacs-lisp :noweb-ref settings @@ -1314,6 +1360,55 @@ that one item is. (define-key org-mode-map (kbd "RET") #'unpackaged/org-return-dwim)) #+end_src +** Insert blank lines around headers :unpackaged: + +#+begin_src emacs-lisp :noweb-ref functions + (defun unpackaged/org-fix-blank-lines (&optional prefix) + "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))) +#+end_src + +I fix the headline spacing every time I save. + +#+begin_src emacs-lisp :noweb-ref hooks + (defun hook--org-mode-fix-blank-lines () + (when (eq major-mode 'org-mode) + (let ((current-prefix-arg 4)) ; Emulate C-u + (call-interactively 'unpackaged/org-fix-blank-lines)))) + + (add-hook 'before-save-hook #'hook--org-mode-fix-blank-lines) +#+end_src * Package management :package: :PROPERTIES: @@ -1340,12 +1435,13 @@ any data loss. Here's what all that looks like. (let ((win-app-dir "~/Applications")) (dolist (path (list ;; Windows + (expand-file-name "exe" win-app-dir) (expand-file-name "Git/bin" win-app-dir) (expand-file-name "Git/usr/bin" win-app-dir) (expand-file-name "Git/mingw64/bin" win-app-dir) + (expand-file-name "Everything" win-app-dir) ;; Linux - (expand-file-name "bin" - user-emacs-directory) + (expand-file-name "bin" user-emacs-directory) (expand-file-name "~/bin") (expand-file-name "~/.local/bin") (expand-file-name "~/Scripts") -- cgit 1.4.1-21-gabe81