diff options
-rw-r--r-- | init.el | 32 | ||||
-rw-r--r-- | lisp/acdw.el | 50 |
2 files changed, 74 insertions, 8 deletions
diff --git a/init.el b/init.el index 970ab83..5fab995 100644 --- a/init.el +++ b/init.el | |||
@@ -37,7 +37,12 @@ | |||
37 | "M-j" nil | 37 | "M-j" nil |
38 | "C-x o" (lambda () (interactive) (switch-to-buffer nil)) | 38 | "C-x o" (lambda () (interactive) (switch-to-buffer nil)) |
39 | "C-x C-o" #'+open-paragraph | 39 | "C-x C-o" #'+open-paragraph |
40 | "C-w" #'+kill-word-backward-or-region) | 40 | "C-w" #'+kill-word-backward-or-region |
41 | "C-x C-1" #'delete-other-windows | ||
42 | "C-x 2" #'+split-window-below-then | ||
43 | "C-x C-2" #'+split-window-below-then | ||
44 | "C-x 3" #'+split-window-right-then | ||
45 | "C-x C-3" #'+split-window-right-then) | ||
41 | ;; C-h deletes backward - see https://idiomdrottning.org/bad-emacs-defaults | 46 | ;; C-h deletes backward - see https://idiomdrottning.org/bad-emacs-defaults |
42 | (global-set-key (kbd "C-h") 'delete-backward-char) | 47 | (global-set-key (kbd "C-h") 'delete-backward-char) |
43 | (keyboard-translate ?\C-h ?\C-?) | 48 | (keyboard-translate ?\C-h ?\C-?) |
@@ -741,11 +746,11 @@ | |||
741 | (:also-load +consult) | 746 | (:also-load +consult) |
742 | ;; from Consult wiki | 747 | ;; from Consult wiki |
743 | (:option register-preview-delay 0 | 748 | (:option register-preview-delay 0 |
744 | register-preview-function 'consult-register-format | 749 | register-preview-function #'consult-register-format |
745 | xref-show-xrefs-function 'consult-xref | 750 | xref-show-xrefs-function #'consult-xref |
746 | xref-show-definitions-function 'consult-xref | 751 | xref-show-definitions-function #'consult-xref |
747 | tab-always-indent 'complete | 752 | tab-always-indent 'complete |
748 | completion-in-region-function 'consult-completion-in-region) | 753 | completion-in-region-function #'consult-completion-in-region) |
749 | (advice-add #'register-preview :override #'consult-register-window) | 754 | (advice-add #'register-preview :override #'consult-register-window) |
750 | (advice-add #'completing-read-multiple :override | 755 | (advice-add #'completing-read-multiple :override |
751 | #'consult-completing-read-multiple) | 756 | #'consult-completing-read-multiple) |
@@ -819,6 +824,12 @@ | |||
819 | (with-eval-after-load 'orderless | 824 | (with-eval-after-load 'orderless |
820 | (:option consult--regexp-compiler 'consult--orderless-regexp-compiler)))) | 825 | (:option consult--regexp-compiler 'consult--orderless-regexp-compiler)))) |
821 | 826 | ||
827 | (setup (:straight consult-dir) | ||
828 | (:+key "C-x C-d" #'consult-dir) | ||
829 | (:with-map vertico-map | ||
830 | (:bind "C-x C-d" #'consult-dir | ||
831 | "C-x C-j" #'consult-dir-jump-file))) | ||
832 | |||
822 | (setup (:straight crux) | 833 | (setup (:straight crux) |
823 | ;; yes it's silly I have an addon to this addon. | 834 | ;; yes it's silly I have an addon to this addon. |
824 | (:also-load +crux) | 835 | (:also-load +crux) |
@@ -902,7 +913,8 @@ See also `crux-reopen-as-root-mode'." | |||
902 | (setup (:straight elpher)) | 913 | (setup (:straight elpher)) |
903 | 914 | ||
904 | (setup (:straight embark) | 915 | (setup (:straight embark) |
905 | (:option prefix-help-command 'embark-prefix-help-command) | 916 | (:option prefix-help-command 'embark-prefix-help-command |
917 | embark-keymap-prompter-key ";") | ||
906 | (:+key "C-." #'embark-act | 918 | (:+key "C-." #'embark-act |
907 | "M-." #'embark-dwim | 919 | "M-." #'embark-dwim |
908 | "<f1> B" #'embark-bindings) | 920 | "<f1> B" #'embark-bindings) |
@@ -1162,8 +1174,10 @@ See also `crux-reopen-as-root-mode'." | |||
1162 | (setup (:straight paredit) | 1174 | (setup (:straight paredit) |
1163 | (:bind "DEL" #'paredit-backward-delete | 1175 | (:bind "DEL" #'paredit-backward-delete |
1164 | "C-<backspace>" #'paredit-backward-kill-word | 1176 | "C-<backspace>" #'paredit-backward-kill-word |
1165 | "C-w" (lambda (r) (interactive "P") | 1177 | "C-w" (lambda (arg) (interactive "P") |
1166 | (+kill-word-backward-or-region r #'paredit-backward-kill-word))) | 1178 | (+kill-word-backward-or-region arg |
1179 | #'paredit-backward-kill-word)) | ||
1180 | "M-s" nil) | ||
1167 | (dolist (hook '(emacs-lisp-mode-hook | 1181 | (dolist (hook '(emacs-lisp-mode-hook |
1168 | eval-expression-minibuffer-setup-hook | 1182 | eval-expression-minibuffer-setup-hook |
1169 | ielm-mode-hook | 1183 | ielm-mode-hook |
@@ -1224,6 +1238,8 @@ See also `crux-reopen-as-root-mode'." | |||
1224 | (simple-modeline-mode +1)) | 1238 | (simple-modeline-mode +1)) |
1225 | 1239 | ||
1226 | (setup (:straight smartscan) | 1240 | (setup (:straight smartscan) |
1241 | (:with-map smartscan-map | ||
1242 | (:bind "M-'" nil)) | ||
1227 | (:hook-into prog-mode)) | 1243 | (:hook-into prog-mode)) |
1228 | 1244 | ||
1229 | (setup (:straight (sophomore | 1245 | (setup (:straight (sophomore |
diff --git a/lisp/acdw.el b/lisp/acdw.el index 8b9c7b9..9361cdf 100644 --- a/lisp/acdw.el +++ b/lisp/acdw.el | |||
@@ -185,5 +185,55 @@ three blank lines, then place the point on the second one." | |||
185 | (newline 2) | 185 | (newline 2) |
186 | (previous-line))) | 186 | (previous-line))) |
187 | 187 | ||
188 | (defun +split-window-then (&optional where arg) | ||
189 | "Split the window into a new buffer. | ||
190 | With non-nil ARG (\\[universal-argument] interactively), don't | ||
191 | prompt for a buffer to switch to. This function will split the | ||
192 | window using `split-window-sensibly', or open the new window in | ||
193 | the direction specified by WHERE. WHERE is ignored when called | ||
194 | interactively; if you want specific splitting, use | ||
195 | `+split-window-right-then' or `+split-window-below-then'." | ||
196 | (interactive "i\nP") | ||
197 | ;; TODO: Canceling at the switching phase leaves the point in the other | ||
198 | ;; window. Ideally, the user would see this as one action, meaning a cancel | ||
199 | ;; would return to the original window. | ||
200 | (pcase where | ||
201 | ;; These directions are 'backward' to the OG Emacs split-window commands, | ||
202 | ;; because by default Emacs leaves the cursor in the original window. Most | ||
203 | ;; users probably expect a switch to the new window, at least I do. | ||
204 | ((or 'right :right) (split-window-right) (other-window 1)) | ||
205 | ((or 'left :left) (split-window-right)) | ||
206 | ((or 'below :below) (split-window-below) (other-window 1)) | ||
207 | ((or 'above :above) (split-window-below)) | ||
208 | ((pred null) | ||
209 | (or (split-window-sensibly) | ||
210 | (if (< (window-height) (window-width)) | ||
211 | (split-window-below) | ||
212 | (split-window-right))) | ||
213 | (other-window 1)) | ||
214 | (_ (user-error "Unknown WHERE paramater: %s" where))) | ||
215 | (unless arg | ||
216 | (condition-case nil | ||
217 | (call-interactively | ||
218 | (pcase (read-char "(B)uffer or (F)ile?") | ||
219 | (?b (if (fboundp #'consult-buffer) | ||
220 | #'consult-buffer | ||
221 | #'switch-to-buffer)) | ||
222 | (?f #'find-file) | ||
223 | (_ #'ignore))) | ||
224 | (quit (delete-window))))) | ||
225 | |||
226 | (defun +split-window-right-then (&optional arg) | ||
227 | "Split window right, then prompt for a new buffer. | ||
228 | With optional ARG (\\[universal-argument]), just split." | ||
229 | (interactive "P") | ||
230 | (+split-window-then :right arg)) | ||
231 | |||
232 | (defun +split-window-below-then (&optional arg) | ||
233 | "Split window below, then prompt for a new buffer. | ||
234 | With optional ARG (\\[universal-argument]), just split." | ||
235 | (interactive "P") | ||
236 | (+split-window-then :below arg)) | ||
237 | |||
188 | (provide 'acdw) | 238 | (provide 'acdw) |
189 | ;;; acdw.el ends here | 239 | ;;; acdw.el ends here |