diff options
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 62 |
1 files changed, 49 insertions, 13 deletions
diff --git a/README.md b/README.md index b4e10ba..f725e84 100644 --- a/README.md +++ b/README.md | |||
@@ -80,6 +80,7 @@ when it errors. | |||
80 | '(use-package-custom-update | 80 | '(use-package-custom-update |
81 | :host github | 81 | :host github |
82 | :repo "a13/use-package-custom-update")) | 82 | :repo "a13/use-package-custom-update")) |
83 | |||
83 | (require 'use-package-custom-update) | 84 | (require 'use-package-custom-update) |
84 | 85 | ||
85 | 86 | ||
@@ -146,6 +147,7 @@ when it errors. | |||
146 | (cuss default-frame-alist | 147 | (cuss default-frame-alist |
147 | '((tool-bar-lines . 0) | 148 | '((tool-bar-lines . 0) |
148 | (menu-bar-lines . 0))) | 149 | (menu-bar-lines . 0))) |
150 | |||
149 | (menu-bar-mode -1) | 151 | (menu-bar-mode -1) |
150 | (tool-bar-mode -1) | 152 | (tool-bar-mode -1) |
151 | 153 | ||
@@ -154,6 +156,7 @@ when it errors. | |||
154 | 156 | ||
155 | (add-to-list 'default-frame-alist '(vertical-scroll-bars . nil)) | 157 | (add-to-list 'default-frame-alist '(vertical-scroll-bars . nil)) |
156 | (scroll-bar-mode -1) | 158 | (scroll-bar-mode -1) |
159 | |||
157 | (add-to-list 'default-frame-alist '(horizontal-scroll-bars . nil)) | 160 | (add-to-list 'default-frame-alist '(horizontal-scroll-bars . nil)) |
158 | (horizontal-scroll-bar-mode -1) | 161 | (horizontal-scroll-bar-mode -1) |
159 | 162 | ||
@@ -171,6 +174,7 @@ when it errors. | |||
171 | ### Remove the bell | 174 | ### Remove the bell |
172 | 175 | ||
173 | (cuss visible-bell (not (string= (system-name) "larry"))) | 176 | (cuss visible-bell (not (string= (system-name) "larry"))) |
177 | |||
174 | (defun acdw/ring-bell-function () | 178 | (defun acdw/ring-bell-function () |
175 | "Custom bell-ringing function." | 179 | "Custom bell-ringing function." |
176 | (let ((orig-face (face-foreground 'mode-line))) | 180 | (let ((orig-face (face-foreground 'mode-line))) |
@@ -180,6 +184,7 @@ when it errors. | |||
180 | (lambda (fg) | 184 | (lambda (fg) |
181 | (set-face-foreground 'mode-line fg)) | 185 | (set-face-foreground 'mode-line fg)) |
182 | orig-face))) | 186 | orig-face))) |
187 | |||
183 | (cuss ring-bell-function #'acdw/ring-bell-function) | 188 | (cuss ring-bell-function #'acdw/ring-bell-function) |
184 | 189 | ||
185 | 190 | ||
@@ -206,6 +211,7 @@ when it errors. | |||
206 | '((width . 80) | 211 | '((width . 80) |
207 | (height . 2) | 212 | (height . 2) |
208 | (vertical-scrollbars . nil))) | 213 | (vertical-scrollbars . nil))) |
214 | |||
209 | (set-window-scroll-bars (minibuffer-window) nil nil) | 215 | (set-window-scroll-bars (minibuffer-window) nil nil) |
210 | 216 | ||
211 | 2. Keep the cursor from going into the prompt | 217 | 2. Keep the cursor from going into the prompt |
@@ -247,6 +253,7 @@ when it errors. | |||
247 | '((up . right) | 253 | '((up . right) |
248 | (down . right) | 254 | (down . right) |
249 | (t . nil))) | 255 | (t . nil))) |
256 | |||
250 | (cuss indicate-empty-lines t) | 257 | (cuss indicate-empty-lines t) |
251 | 258 | ||
252 | 259 | ||
@@ -411,6 +418,7 @@ from [link0ff](https://github.com/link0ff/emacs-init). | |||
411 | :height 100) | 418 | :height 100) |
412 | ("Consolas" | 419 | ("Consolas" |
413 | :height 100))) | 420 | :height 100))) |
421 | |||
414 | (set-face-from-alternatives 'fixed-pitch | 422 | (set-face-from-alternatives 'fixed-pitch |
415 | '(("Libertinus Mono" | 423 | '(("Libertinus Mono" |
416 | :height 110) | 424 | :height 110) |
@@ -420,6 +428,7 @@ from [link0ff](https://github.com/link0ff/emacs-init). | |||
420 | :height 100) | 428 | :height 100) |
421 | ("Consolas" | 429 | ("Consolas" |
422 | :height 100))) | 430 | :height 100))) |
431 | |||
423 | (set-face-from-alternatives 'variable-pitch | 432 | (set-face-from-alternatives 'variable-pitch |
424 | '(("Libertinus Serif" | 433 | '(("Libertinus Serif" |
425 | :height 120) | 434 | :height 120) |
@@ -427,6 +436,7 @@ from [link0ff](https://github.com/link0ff/emacs-init). | |||
427 | :height 120) | 436 | :height 120) |
428 | ("Georgia" | 437 | ("Georgia" |
429 | :height 110))) | 438 | :height 110))) |
439 | |||
430 | (remove-function after-focus-change-function #'acdw/setup-fonts))) | 440 | (remove-function after-focus-change-function #'acdw/setup-fonts))) |
431 | 441 | ||
432 | (add-function :before after-focus-change-function #'acdw/setup-fonts) | 442 | (add-function :before after-focus-change-function #'acdw/setup-fonts) |
@@ -454,6 +464,7 @@ from [link0ff](https://github.com/link0ff/emacs-init). | |||
454 | (straight-use-package 'async) | 464 | (straight-use-package 'async) |
455 | (autoload 'dired-async-mode "dired-async.el" nil t) | 465 | (autoload 'dired-async-mode "dired-async.el" nil t) |
456 | (dired-async-mode +1) | 466 | (dired-async-mode +1) |
467 | |||
457 | (async-bytecomp-package-mode +1) | 468 | (async-bytecomp-package-mode +1) |
458 | 469 | ||
459 | 470 | ||
@@ -511,6 +522,7 @@ from [link0ff](https://github.com/link0ff/emacs-init). | |||
511 | ("<help> a" . consult-apropos)) | 522 | ("<help> a" . consult-apropos)) |
512 | :init | 523 | :init |
513 | (fset 'multi-occur #'consult-multi-occur)) | 524 | (fset 'multi-occur #'consult-multi-occur)) |
525 | |||
514 | (use-package consult-selectrum | 526 | (use-package consult-selectrum |
515 | :straight (consult-selectrum | 527 | :straight (consult-selectrum |
516 | :host github | 528 | :host github |
@@ -620,8 +632,11 @@ Also from link0ff. See the above for a link. | |||
620 | '(kill-ring | 632 | '(kill-ring |
621 | search-ring | 633 | search-ring |
622 | regexp-search-ring)) | 634 | regexp-search-ring)) |
635 | |||
623 | (cuss savehist-save-minibuffer-history t) | 636 | (cuss savehist-save-minibuffer-history t) |
637 | |||
624 | (cuss history-length t) | 638 | (cuss history-length t) |
639 | |||
625 | (cuss history-delete-duplicates t) | 640 | (cuss history-delete-duplicates t) |
626 | 641 | ||
627 | (savehist-mode +1) | 642 | (savehist-mode +1) |
@@ -643,6 +658,7 @@ Also from link0ff. See the above for a link. | |||
643 | 658 | ||
644 | (cuss recentf-max-menu-items 100) | 659 | (cuss recentf-max-menu-items 100) |
645 | (cuss recentf-max-saved-items 100) | 660 | (cuss recentf-max-saved-items 100) |
661 | |||
646 | (with-eval-after-load 'no-littering | 662 | (with-eval-after-load 'no-littering |
647 | (add-to-list 'recentf-exclude no-littering-var-directory) | 663 | (add-to-list 'recentf-exclude no-littering-var-directory) |
648 | (add-to-list 'recentf-exclude no-littering-etc-directory)) | 664 | (add-to-list 'recentf-exclude no-littering-etc-directory)) |
@@ -762,10 +778,10 @@ Also from link0ff. See the above for a link. | |||
762 | from [Emacs Wiki](https://www.emacswiki.org/emacs/EndOfLineTips). | 778 | from [Emacs Wiki](https://www.emacswiki.org/emacs/EndOfLineTips). |
763 | 779 | ||
764 | (defun ewiki/no-junk-please-were-unixish () | 780 | (defun ewiki/no-junk-please-were-unixish () |
765 | "Convert line endings to UNIX, dammit." | 781 | "Convert line endings to UNIX, dammit." |
766 | (let ((coding-str (symbol-name buffer-file-coding-system))) | 782 | (let ((coding-str (symbol-name buffer-file-coding-system))) |
767 | (when (string-match "-\\(?:dos\\|mac\\)$" coding-str) | 783 | (when (string-match "-\\(?:dos\\|mac\\)$" coding-str) |
768 | (set-buffer-file-coding-system 'unix)))) | 784 | (set-buffer-file-coding-system 'unix)))) |
769 | 785 | ||
770 | I add it to the `find-file-hook` *and* `before-save-hook` because I don't want to ever work with anything other than UNIX line endings ever again. I just don't care. Even Microsoft Notepad can handle UNIX line endings, so I don't want to hear it. | 786 | I add it to the `find-file-hook` *and* `before-save-hook` because I don't want to ever work with anything other than UNIX line endings ever again. I just don't care. Even Microsoft Notepad can handle UNIX line endings, so I don't want to hear it. |
771 | 787 | ||
@@ -845,23 +861,30 @@ I add it to the `find-file-hook` *and* `before-save-hook` because I don't want t | |||
845 | :custom | 861 | :custom |
846 | (company-idle-delay 0.1) | 862 | (company-idle-delay 0.1) |
847 | (company-minimum-prefix-length 3) | 863 | (company-minimum-prefix-length 3) |
864 | |||
848 | :init | 865 | :init |
849 | (defun acdw/company-complete-common-or-cycle+1 () | 866 | (defun acdw/company-complete-common-or-cycle+1 () |
850 | (interactive) | 867 | (interactive) |
851 | (company-complete-common-or-cycle +1)) | 868 | (company-complete-common-or-cycle +1)) |
869 | |||
852 | (defun acdw/company-complete-common-or-cycle-1 () | 870 | (defun acdw/company-complete-common-or-cycle-1 () |
853 | (interactive) | 871 | (interactive) |
854 | (company-complete-common-or-cycle -1)) | 872 | (company-complete-common-or-cycle -1)) |
873 | |||
855 | :bind | 874 | :bind |
856 | (:map company-active-map | 875 | (:map company-active-map |
857 | ("C-n" . acdw/company-complete-common-or-cycle+1) | 876 | ("C-n" . acdw/company-complete-common-or-cycle+1) |
858 | ("C-p" . acdw/company-complete-common-or-cycle-1)) | 877 | ("C-p" . acdw/company-complete-common-or-cycle-1)) |
878 | |||
859 | :hook | 879 | :hook |
860 | (prog-mode-hook . company-mode)) | 880 | (prog-mode-hook . company-mode)) |
881 | |||
861 | (use-package company-prescient | 882 | (use-package company-prescient |
862 | :hook | 883 | :hook |
863 | (company-mode-hook . company-prescient-mode)) | 884 | (company-mode-hook . company-prescient-mode)) |
885 | |||
864 | ;; this comes with company-quickhelp, so.... | 886 | ;; this comes with company-quickhelp, so.... |
887 | |||
865 | (use-package company-posframe | 888 | (use-package company-posframe |
866 | :after (company) | 889 | :after (company) |
867 | :config | 890 | :config |
@@ -962,6 +985,7 @@ I’ve put org mode under Applications, as opposed to Writing, because it’s m | |||
962 | ### Org Agenda | 985 | ### Org Agenda |
963 | 986 | ||
964 | (cuss org-agenda-files (no-littering-expand-etc-file-name "agenda-files")) | 987 | (cuss org-agenda-files (no-littering-expand-etc-file-name "agenda-files")) |
988 | |||
965 | (if (and (stringp org-agenda-files) | 989 | (if (and (stringp org-agenda-files) |
966 | (not (file-exists-p org-agenda-files))) | 990 | (not (file-exists-p org-agenda-files))) |
967 | (with-temp-buffer (write-file org-agenda-files))) | 991 | (with-temp-buffer (write-file org-agenda-files))) |
@@ -981,6 +1005,7 @@ I’ve put org mode under Applications, as opposed to Writing, because it’s m | |||
981 | ### [A better return in Org mode](http://kitchingroup.cheme.cmu.edu/blog/2017/04/09/A-better-return-in-org-mode/) | 1005 | ### [A better return in Org mode](http://kitchingroup.cheme.cmu.edu/blog/2017/04/09/A-better-return-in-org-mode/) |
982 | 1006 | ||
983 | (require 'org-inlinetask) | 1007 | (require 'org-inlinetask) |
1008 | |||
984 | (defun scimax/org-return (&optional ignore) | 1009 | (defun scimax/org-return (&optional ignore) |
985 | "Add new list item, heading or table row with RET. | 1010 | "Add new list item, heading or table row with RET. |
986 | A double return on an empty element deletes it. | 1011 | A double return on an empty element deletes it. |
@@ -989,20 +1014,25 @@ I’ve put org mode under Applications, as opposed to Writing, because it’s m | |||
989 | (if ignore | 1014 | (if ignore |
990 | (org-return) | 1015 | (org-return) |
991 | (cond | 1016 | (cond |
1017 | |||
992 | ((eq 'line-break (car (org-element-context))) | 1018 | ((eq 'line-break (car (org-element-context))) |
993 | (org-return t)) | 1019 | (org-return t)) |
1020 | |||
994 | ;; Open links like usual, unless point is at the end of a line. | 1021 | ;; Open links like usual, unless point is at the end of a line. |
995 | ;; and if at beginning of line, just press enter. | 1022 | ;; and if at beginning of line, just press enter. |
996 | ((or (and (eq 'link (car (org-element-context))) (not (eolp))) | 1023 | ((or (and (eq 'link (car (org-element-context))) (not (eolp))) |
997 | (bolp)) | 1024 | (bolp)) |
998 | (org-return)) | 1025 | (org-return)) |
1026 | |||
999 | ;; It doesn't make sense to add headings in inline tasks. Thanks Anders | 1027 | ;; It doesn't make sense to add headings in inline tasks. Thanks Anders |
1000 | ;; Johansson! | 1028 | ;; Johansson! |
1001 | ((org-inlinetask-in-task-p) | 1029 | ((org-inlinetask-in-task-p) |
1002 | (org-return)) | 1030 | (org-return)) |
1031 | |||
1003 | ;; checkboxes too | 1032 | ;; checkboxes too |
1004 | ((org-at-item-checkbox-p) | 1033 | ((org-at-item-checkbox-p) |
1005 | (org-insert-todo-heading nil)) | 1034 | (org-insert-todo-heading nil)) |
1035 | |||
1006 | ;; lists end with two blank lines, so we need to make sure we are also not | 1036 | ;; lists end with two blank lines, so we need to make sure we are also not |
1007 | ;; at the beginning of a line to avoid a loop where a new entry gets | 1037 | ;; at the beginning of a line to avoid a loop where a new entry gets |
1008 | ;; created with only one blank line. | 1038 | ;; created with only one blank line. |
@@ -1012,6 +1042,7 @@ I’ve put org mode under Applications, as opposed to Writing, because it’s m | |||
1012 | (beginning-of-line) | 1042 | (beginning-of-line) |
1013 | (delete-region (line-beginning-position) (line-end-position)) | 1043 | (delete-region (line-beginning-position) (line-end-position)) |
1014 | (org-return))) | 1044 | (org-return))) |
1045 | |||
1015 | ;; org-heading | 1046 | ;; org-heading |
1016 | ((org-at-heading-p) | 1047 | ((org-at-heading-p) |
1017 | (if (not (string= "" (org-element-property :title (org-element-context)))) | 1048 | (if (not (string= "" (org-element-property :title (org-element-context)))) |
@@ -1021,6 +1052,7 @@ I’ve put org mode under Applications, as opposed to Writing, because it’s m | |||
1021 | (beginning-of-line) | 1052 | (beginning-of-line) |
1022 | (setf (buffer-substring | 1053 | (setf (buffer-substring |
1023 | (line-beginning-position) (line-end-position)) ""))) | 1054 | (line-beginning-position) (line-end-position)) ""))) |
1055 | |||
1024 | ;; tables | 1056 | ;; tables |
1025 | ((org-at-table-p) | 1057 | ((org-at-table-p) |
1026 | (if (-any? | 1058 | (if (-any? |
@@ -1034,9 +1066,12 @@ I’ve put org mode under Applications, as opposed to Writing, because it’s m | |||
1034 | (setf (buffer-substring | 1066 | (setf (buffer-substring |
1035 | (line-beginning-position) (line-end-position)) "") | 1067 | (line-beginning-position) (line-end-position)) "") |
1036 | (org-return))) | 1068 | (org-return))) |
1069 | |||
1037 | ;; fall-through case | 1070 | ;; fall-through case |
1038 | (t | 1071 | (t |
1039 | (org-return))))) | 1072 | (org-return))))) |
1073 | |||
1074 | |||
1040 | (define-key org-mode-map (kbd "RET") | 1075 | (define-key org-mode-map (kbd "RET") |
1041 | 'scimax/org-return) | 1076 | 'scimax/org-return) |
1042 | 1077 | ||
@@ -1087,16 +1122,10 @@ from [unpackaged.el](https://github.com/alphapapa/unpackaged.el#ensure-blank-lin | |||
1087 | (when (eq major-mode 'org-mode) | 1122 | (when (eq major-mode 'org-mode) |
1088 | (let ((current-prefix-arg 4)) ; Emulate C-u | 1123 | (let ((current-prefix-arg 4)) ; Emulate C-u |
1089 | (call-interactively 'unpackaged/org-fix-blank-lines)))) | 1124 | (call-interactively 'unpackaged/org-fix-blank-lines)))) |
1125 | |||
1090 | (add-hook 'before-save-hook #'cribbed/org-mode-fix-blank-lines) | 1126 | (add-hook 'before-save-hook #'cribbed/org-mode-fix-blank-lines) |
1091 | 1127 | ||
1092 | 1128 | ||
1093 | ### Agenda | ||
1094 | |||
1095 | (bind-key "C-a" #'org-agenda 'acdw/map) | ||
1096 | (cuss org-agenda-files | ||
1097 | '("~/todo.org")) | ||
1098 | |||
1099 | |||
1100 | ## Elpher | 1129 | ## Elpher |
1101 | 1130 | ||
1102 | (use-package elpher | 1131 | (use-package elpher |
@@ -1210,10 +1239,12 @@ from [unpackaged.el](https://github.com/alphapapa/unpackaged.el#ensure-blank-lin | |||
1210 | from [karthinks](https://karthinks.com/software/more-batteries-included-with-emacs/#regexp-builder--m-x-re-builder). | 1239 | from [karthinks](https://karthinks.com/software/more-batteries-included-with-emacs/#regexp-builder--m-x-re-builder). |
1211 | 1240 | ||
1212 | (require 'browse-url) | 1241 | (require 'browse-url) |
1242 | |||
1213 | (when (executable-find "mpv") | 1243 | (when (executable-find "mpv") |
1214 | (defun browse-url-mpv (url &optional single) | 1244 | (defun browse-url-mpv (url &optional single) |
1215 | (start-process "mpv" nil (if single "mpv" "umpv") | 1245 | (start-process "mpv" nil (if single "mpv" "umpv") |
1216 | (shell-quote-wildcard-pattern url))) | 1246 | (shell-quote-wildcard-pattern url))) |
1247 | |||
1217 | (defun browse-url-at-point-mpv (&optional single) | 1248 | (defun browse-url-at-point-mpv (&optional single) |
1218 | "Open a link in mpv." | 1249 | "Open a link in mpv." |
1219 | (interactive "P") | 1250 | (interactive "P") |
@@ -1224,6 +1255,7 @@ from [karthinks](https://karthinks.com/software/more-batteries-included-with-ema | |||
1224 | (browse-url-mpv url t)) | 1255 | (browse-url-mpv url t)) |
1225 | #'browse-url-mpv))) | 1256 | #'browse-url-mpv))) |
1226 | (browse-url-at-point))) | 1257 | (browse-url-at-point))) |
1258 | |||
1227 | (cuss browse-url-browser-function | 1259 | (cuss browse-url-browser-function |
1228 | '(("https?:\\/\\/www\\.youtu\\.*be." . browse-url-mpv) | 1260 | '(("https?:\\/\\/www\\.youtu\\.*be." . browse-url-mpv) |
1229 | ("." . browse-url-generic)))) | 1261 | ("." . browse-url-generic)))) |
@@ -1300,8 +1332,8 @@ from [karthinks](https://karthinks.com/software/more-batteries-included-with-ema | |||
1300 | 1332 | ||
1301 | ;; early-init.el -*- lexical-binding: t; no-byte-compile: t; -*- | 1333 | ;; early-init.el -*- lexical-binding: t; no-byte-compile: t; -*- |
1302 | 1334 | ||
1303 | (setq load-prefer-newer t) | 1335 | (setq load-prefer-newer t) |
1304 | (setq frame-inhibit-implied-resize t) | 1336 | (setq frame-inhibit-implied-resize t) |
1305 | 1337 | ||
1306 | 1338 | ||
1307 | ## Ease tangling and loading of Emacs' init | 1339 | ## Ease tangling and loading of Emacs' init |
@@ -1336,6 +1368,7 @@ from [karthinks](https://karthinks.com/software/more-batteries-included-with-ema | |||
1336 | 1368 | ||
1337 | (defun acdw/refresh-emacs-no-load () | 1369 | (defun acdw/refresh-emacs-no-load () |
1338 | (refresh-emacs 'disable-load)) | 1370 | (refresh-emacs 'disable-load)) |
1371 | |||
1339 | (add-hook 'kill-emacs-hook #'acdw/refresh-emacs-no-load) | 1372 | (add-hook 'kill-emacs-hook #'acdw/refresh-emacs-no-load) |
1340 | 1373 | ||
1341 | 1374 | ||
@@ -1355,6 +1388,7 @@ Here’s a wrapper script that’ll start `emacs –daemon` if there isn’t one | |||
1355 | ## License | 1388 | ## License |
1356 | 1389 | ||
1357 | Copyright © 2020 Case Duckworth <acdw@acdw.net> | 1390 | Copyright © 2020 Case Duckworth <acdw@acdw.net> |
1391 | |||
1358 | This work is free. You can redistribute it and/or modify it under the | 1392 | This work is free. You can redistribute it and/or modify it under the |
1359 | terms of the Do What the Fuck You Want To Public License, Version 2, | 1393 | terms of the Do What the Fuck You Want To Public License, Version 2, |
1360 | as published by Sam Hocevar. See the `LICENSE` file, tangled from the | 1394 | as published by Sam Hocevar. See the `LICENSE` file, tangled from the |
@@ -1370,6 +1404,7 @@ following source block, for details. | |||
1370 | this license document, and changing it is allowed as long as the name is changed. | 1404 | this license document, and changing it is allowed as long as the name is changed. |
1371 | 1405 | ||
1372 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE | 1406 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE |
1407 | |||
1373 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | 1408 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
1374 | 1409 | ||
1375 | 0. You just DO WHAT THE FUCK YOU WANT TO. | 1410 | 0. You just DO WHAT THE FUCK YOU WANT TO. |
@@ -1379,5 +1414,6 @@ following source block, for details. | |||
1379 | 1414 | ||
1380 | It's highly likely that the WTFPL is completely incompatible with the | 1415 | It's highly likely that the WTFPL is completely incompatible with the |
1381 | GPL, for what should be fairly obvious reasons. To that, I say: | 1416 | GPL, for what should be fairly obvious reasons. To that, I say: |
1417 | |||
1382 | **SUE ME, RMS!** | 1418 | **SUE ME, RMS!** |
1383 | 1419 | ||