diff options
Diffstat (limited to 'Emacs/.config')
-rw-r--r-- | Emacs/.config/emacs/config.org | 132 |
1 files changed, 72 insertions, 60 deletions
diff --git a/Emacs/.config/emacs/config.org b/Emacs/.config/emacs/config.org index 42c69bb..eb1ef23 100644 --- a/Emacs/.config/emacs/config.org +++ b/Emacs/.config/emacs/config.org @@ -504,6 +504,7 @@ Some bindings that I couldn't fit elsewhere easily. (buffer-leader "b" #'switch-to-buffer "d" #'kill-current-buffer + "c" #'kill-buffer-and-window "K" #'kill-buffer "j" #'next-buffer "k" #'previous-buffer @@ -1145,10 +1146,7 @@ for all snippets I've got. :config (yas-load-directory (no-littering-expand-etc-file-name "yasnippet/snippets"))) #+end_src -*** WAIT Hydra -:PROPERTIES: -:header-args:emacs-lisp: :tangle no -:END: +*** Hydra Hydra is a great package by =abo-abo= (yes the same guy who made ivy and swiper) and I hope to use it later on in the config. There are two use-package declarations here: one for ~hydra~ itself, and the @@ -1160,6 +1158,19 @@ use-package declarations. (use-package use-package-hydra :straight t) + +(use-package hydra + :hydra + (hydra-window-resize + nil "Resize the current window effectively" + (">" #'evil-window-increase-width) + ("<" #'evil-window-decrease-width) + ("-" #'evil-window-decrease-height) + ("+" #'evil-window-increase-height) + ("=" #'balance-windows)) + :general + (leader + "wr" #'hydra-window-resize/body)) #+end_src * Small packages ** Info @@ -1243,7 +1254,8 @@ need to use it. :keymaps 'override "C-s" #'avy-goto-char-timer "M-s" #'isearch-forward - "gp" #'avy-move-region + "gp" #'avy-copy-region + "gP" #'avy-move-region "gl" #'avy-goto-line "gw" #'avy-goto-word-1)) #+end_src @@ -1301,7 +1313,7 @@ possible options for the next key. #+begin_src emacs-lisp (use-package which-key :straight t - :defer t + :after general :config (which-key-mode)) #+end_src @@ -1569,7 +1581,7 @@ I maintain a bookmarks file at =~/Text/bookmarks.org=. I would like the ability to construct new bookmarks and open bookmarks. They may be either articles I want to read, useful information documents or just straight up youtube videos. This -[[file:elisp/bookmark.el][library]] does the appropriate dispatching +[[file:elisp/org-bookmark.el][library]] does the appropriate dispatching and work for me. #+begin_src emacs-lisp @@ -2528,7 +2540,7 @@ limit), so set it for specific modes need the help. (org-mode-hook . whitespace-mode) (text-mode-hook . whitespace-mode) :init - (setq whitespace-style '(face empty spaces tabs tab-mark trailing newline) + (setq whitespace-style '(face empty spaces tabs tab-mark newline) whitespace-line-column 80)) #+end_src ** Set auto-fill-mode for all text-modes @@ -2598,6 +2610,9 @@ any symbol. This is very useful when programming as it: Eldoc box makes the help buffer a hovering box instead of printing it in the minibuffer. A lot cleaner. + +2024-05-31: Eldoc box is a bit useless now that I'm not using frames. +I prefer the use of the minibuffer for printing documentation now. #+begin_src emacs-lisp (use-package eldoc :defer t @@ -2607,17 +2622,6 @@ in the minibuffer. A lot cleaner. :general (leader "h>" #'eldoc-doc-buffer)) - -(use-package eldoc-box - :straight t - :defer t - :hook (eldoc-mode-hook . eldoc-box-hover-mode) - :init - (setq eldoc-box-position-function #'eldoc-box--default-upper-corner-position-function - eldoc-box-clear-with-C-g t) - :general - (leader - "h." #'eldoc-box-help-at-point)) #+end_src ** Flycheck Flycheck is the checking system for Emacs. I don't necessarily like @@ -2676,7 +2680,10 @@ server when I need it. "r" #'eglot-rename "R" #'eglot-reconnect) :init - (setq eglot-stay-out-of '(flymake)) + (setq eglot-stay-out-of '(flymake) + eglot-ignored-server-capabilities '(:documentHighlightProvider + :documentOnTypeFormattingProvider + :inlayHintProvider)) :config (add-to-list 'eglot-server-programs '((c++-mode c-mode) "clangd"))) #+end_src @@ -2763,9 +2770,10 @@ Colourising the compilation buffer so ANSI colour codes get computed. (use-package compile :defer t :general - (code-leader + (leader "j" #'next-error - "k" #'previous-error + "k" #'previous-error) + (code-leader "c" #'compile "C" #'recompile) (nmmap @@ -2849,6 +2857,7 @@ quickly generate them in C/C++ projects. (substring files 1 (- (length files) 1)))) (lambda (p event) (when (string= event "finished\n") + (visit-tags-table (concat (project-root (project-current)) "TAGS")) (message "Finished generating tags!"))))))))) #+end_src ** WAIT Projectile @@ -3107,35 +3116,34 @@ The cherry on top is ~+org/search-config-headings~ which searches the org files in ~user-emacs-directory~ and provides the headings for them. This allows me to search my configuration pretty quickly. #+begin_src emacs-lisp -(with-eval-after-load "counsel" - (use-package org - :straight t - :defer t - :config - (defun +org/swiper-goto () - (interactive) - (counsel-grep-or-swiper "^\\* ")) - - (defun +org/search-headings () - "Searches directory (of buffer) for org headings via counsel-rg" - (interactive) - (counsel-rg "^\\* " (file-name-directory (buffer-file-name)))) - - (defun +org/search-config-headings () - "Searches config.org for org headings via +org/swiper-goto" - (interactive) - (with-current-buffer (find-file (concat user-emacs-directory "config.org")) - (+org/swiper-goto))) - - :general - (file-leader - "p" #'+org/search-config-headings) - (search-leader - :keymaps 'org-mode-map - "I" #'+org/search-headings) - (nmmap - :keymaps 'org-mode-map - [remap imenu] #'+org/swiper-goto))) +(use-package counsel + :defer t + :commands (+org/swiper-goto + +org/search-headings + +org/search-config-headings) + :general + (file-leader + "p" #'+org/search-config-headings) + (search-leader + :keymaps 'org-mode-map + "I" #'+org/search-headings) + (nmmap + :keymaps 'org-mode-map + [remap imenu] #'+org/swiper-goto) + :config + (defun +org/swiper-goto () + (interactive) + (counsel-grep-or-swiper "^\\* ")) + + (defun +org/search-headings () + "Searches directory (of buffer) for org headings via counsel-rg" + (interactive) + (counsel-rg "^\\* " (file-name-directory (buffer-file-name)))) + + (defun +org/search-config-headings () + "Searches config.org for org headings via +org/swiper-goto" + (interactive) + (counsel-rg "^\\* " (file-name-directory user-emacs-directory)))) #+end_src ** Org Agenda Org agenda provides a nice viewing for schedules. With org mode it's @@ -3198,8 +3206,13 @@ what org-capture does. ")) org-default-notes-file (concat org-directory "/todo.org")) :general - (file-leader - "w" #'org-capture)) + (leader + "C" #'org-capture) + (nmmap + :keymaps 'org-capture-mode-map + "ZZ" #'org-capture-finalize + "ZR" #'org-capture-refile + "ZQ" #'org-capture-kill)) #+end_src ** Org clock-in Org provides a nice timekeeping system that allows for managing how @@ -3515,10 +3528,9 @@ Setup for C and C++ modes, using Emacs' default package: cc-mode. *** cc-mode Tons of stuff, namely: + ~auto-fill-mode~ for 80 char limit -+ Some keybindings to make evil statement movement is easy ++ Some keybindings to make evil statement movement easy + Lots of pretty symbols -+ Indenting options and a nice (for me) code style for C (though - aggressive indent screws with this a bit) ++ Indenting options and a nice (for me) code style for C + Auto inserts to get a C file going #+begin_src emacs-lisp (use-package cc-mode @@ -3580,7 +3592,6 @@ Tons of stuff, namely: (concat " * " x))) rest "\n")))) - :auto-insert (("\\.c\\'" . "C skeleton") "" @@ -3996,7 +4007,7 @@ A child language of javascript which compiles to it. Common Lisp is a dialect of Lisp, the most /common/ one around. Emacs comes with builtin Lisp support of course, but a REPL would be nice. -*** WAIT Sly +*** Sly Enter /SLY/. Sly is a fork of /SLIME/ and is *mandatory* for lisp development on Emacs. @@ -4005,7 +4016,8 @@ development on Emacs. :defer t :straight t :init - (setq inferior-lisp-program "sbcl") + (setq inferior-lisp-program "sbcl" + sly-lisp-loop-body-forms-indentation 0) :display ("\\*sly-db" (display-buffer-at-bottom) @@ -4029,7 +4041,7 @@ development on Emacs. "gR" #'sly-who-calls) (local-leader :keymaps '(lisp-mode-map sly-mrepl-mode-map) - "s" #'+shell/toggle-sly + "s" #'sly-mrepl "c" #'sly-compile-file "a" #'sly-apropos "d" #'sly-describe-symbol |