From f4c1ff655111172cc8f4a5c6d9c81f1affee3b2b Mon Sep 17 00:00:00 2001 From: Ian Keane Date: Fri, 24 Nov 2023 22:56:08 -0500 Subject: [PATCH] More emacs config updates Still moving too quickly for comprehensive commit messages --- guix/init.org | 216 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 161 insertions(+), 55 deletions(-) diff --git a/guix/init.org b/guix/init.org index 83641b8..2133992 100644 --- a/guix/init.org +++ b/guix/init.org @@ -68,27 +68,20 @@ To get started, run =C-c C-v t= (ensure-directory "~/notes/roam") (ensure-directory "~/notes/deft") (ensure-directory "~/notes/code") + (ensure-directory "~/.config/emacs/video") + (ensure-directory "~/.config/emacs/audio") (setq deft-directory "~/notes/deft" org-roam-directory "~/notes/roam" projectile-project-search-path '("~/code/") + empv-video-dir "~/.config/emacs/video" + empv-audio-dir "~/.config/emacs/audio" backup-directory-alist `(("." . "~/.config/emacs/backups/")) auto-save-file-name-transforms `((".*" "~/.config/emacs/autosaves/" t))) #+end_src ** Helper Functions #+begin_src emacs-lisp - (defun split-and-follow-horizontally () - (interactive) - (split-window-below) - (balance-windows) - (other-window 1)) - - (defun split-and-follow-vertically () - (interactive) - (split-window-right) - (balance-windows) - (other-window 1)) (defun custom/eval-region-or-buffer () "Eval the region if anything is selected, otherwise eval the whole buffer." @@ -124,8 +117,7 @@ To get started, run =C-c C-v t= * Org Mode #+begin_src emacs-lisp (use-package org) - - ; (add-hook 'org-mode-hook 'yas-minor-mode) + ; (add-hook 'org-mode-hook 'yas-minor-mode) (org-babel-do-load-languages 'org-babel-load-languages '((emacs-lisp . t) @@ -133,11 +125,19 @@ To get started, run =C-c C-v t= (setq org-confirm-babel-evaluate nil) - ;; (use-package org-tempo) - + (require 'org-tempo) (add-to-list 'org-structure-template-alist '("sh" . "src shell")) (add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp")) + + (use-package org-make-toc + :hook (org-mode . org-make-toc-mode)) (add-to-list 'org-structure-template-alist '("py" . "src python")) + + (setq org-hide-emphasis-markers t) + + (use-package org-appear + :hook (org-mode . org-appear-mode)) + #+end_src * Basic Appearance and Behaviors #+begin_src emacs-lisp @@ -174,29 +174,73 @@ To get started, run =C-c C-v t= (add-hook mode (lambda () (display-line-numbers-mode 0)))) (column-number-mode) + + (use-package default-text-scale + :defer 1 + :config + (default-text-scale-mode)) + + (use-package rainbow-delimiters :hook (prog-mode . rainbow-delimiters-mode)) (use-package helpful) ; Slightly more helpful help (setq tab-always-indent 'complete) (setq tab-first-completion 'word) + + ;; Generate buffers in last window + (setq display-buffer-base-action + '(display-buffer-reuse-mode-window + display-buffer-reuse-window + display-buffer-same-window)) + + ;; If a popup does happen, don't resize windows to be equal-sized + (setq even-window-sizes nil) #+end_src * Navigation -** Windows +** Helper Functions +#+begin_src emacs-lisp + (defun split-and-follow-horizontally () + (interactive) + (split-window-below) + (balance-windows) + (other-window 1)) + + (defun split-and-follow-vertically () + (interactive) + (split-window-right) + (balance-windows) + (other-window 1)) +#+end_src +** Direct keymaps #+begin_src emacs-lisp (global-set-key (kbd "s-c") 'delete-window) (global-set-key (kbd "s-h") 'windmove-left) (global-set-key (kbd "s-j") 'windmove-down) (global-set-key (kbd "s-k") 'windmove-up) (global-set-key (kbd "s-l") 'windmove-right) - ; (define-key evil-normal-state-map (kbd "s-d") 'kill-this-buffer) - ; (define-key evil-normal-state-map (kbd "s-n") 'projectile-next-project-buffer) - ; (define-key evil-normal-state-map (kbd "s-p") 'projectile-previous-project-buffer) - ; (define-key evil-normal-state-map (kbd "s-J") 'split-and-follow-horizontally) - ; (define-key evil-normal-state-map (kbd "s-L") 'split-and-follow-vertically) - ; (define-key evil-normal-state-map (kbd "s-b") 'buffer-menu) - ; (define-key evil-normal-state-map (kbd "s-x") 'execute-extended-command) + ; (define-key evil-normal-state-map (kbd "s-d") 'kill-this-buffer) + ; (define-key evil-normal-state-map (kbd "s-n") 'projectile-next-project-buffer) + ; (define-key evil-normal-state-map (kbd "s-p") 'projectile-previous-project-buffer) + ; (define-key evil-normal-state-map (kbd "s-J") 'split-and-follow-horizontally) + ; (define-key evil-normal-state-map (kbd "s-L") 'split-and-follow-vertically) + ; (define-key evil-normal-state-map (kbd "s-b") 'buffer-menu) + ; (define-key evil-normal-state-map (kbd "s-x") 'execute-extended-command) (global-set-key (kbd "s-SPC") 'tab-next) + (global-set-key (kbd "") 'keyboard-escape-quit) + + (use-package winner + :after evil + :config + (winner-mode)) + + +#+end_src +** Workspaces +#+begin_src emacs-lisp + (use-package perspective) + (unless (equal persp-mode t) + (persp-mode)) #+end_src ** Dired #+begin_src emacs-lisp @@ -381,7 +425,7 @@ To get started, run =C-c C-v t= "h" '(info-emacs-manual :which-key "Emacs manual") "h'" '(describe-char :which-key "Describe character") "ha" '(counsel-apropos :which-key "Apropos") - "hb" '(counsel-descbinds :which-key "Describe bindings") + "hb" '(embark-bindings :which-key "Describe bindings") "he" '(view-echo-area-messages :which-key "View echo area messages") "hf" '(helpful-function :which-key "Describe function") "hi" '(info :which-key "Info") @@ -587,8 +631,39 @@ Idk I think this came from the vertico readme #+end_src ** Embark #+begin_src emacs-lisp - (use-package embark-consult) + (use-package embark + :ensure t + + :bind + (("C-." . embark-act) ;; pick some comfortable binding + ("C-;" . embark-dwim) ;; good alternative: M-. + ("C-h B" . embark-bindings)) ;; alternative for `describe-bindings' + :init + + ;; Show the Embark target at point via Eldoc. You may adjust the Eldoc + ;; strategy, if you want to see the documentation from multiple providers. + (add-hook 'eldoc-documentation-functions #'embark-eldoc-first-target) + + :config + ;; Hide the mode line of the Embark live/completions buffers + (add-to-list 'display-buffer-alist + '("\\`\\*Embark Collect \\(Live\\|Completions\\)\\*" + nil + (window-parameters (mode-line-format . none))))) + +;; Consult users will also want the embark-consult package. +(use-package embark-consult + :ensure t ; only need to install it, embark loads it after consult if found + :hook + (embark-collect-mode . consult-preview-at-point-mode)) #+end_src +** Snippets +#+begin_src emacs-lisp + (use-package yasnippet) + (use-package yasnippet-snippets) + (yas-global-mode) +#+end_src +