diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-02-15 22:04:57 +0000 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2025-02-15 22:04:57 +0000 |
commit | b4b9cfc4507d7e1448fe39ef249711ac548968c4 (patch) | |
tree | b032f2643a8763bbc225f3bc828e5cbd933a2a5d /Emacs/.config/emacs | |
parent | a21a7454d76251f0db1f039de2a93ca63411a6f1 (diff) | |
download | dotfiles-b4b9cfc4507d7e1448fe39ef249711ac548968c4.tar.gz dotfiles-b4b9cfc4507d7e1448fe39ef249711ac548968c4.tar.bz2 dotfiles-b4b9cfc4507d7e1448fe39ef249711ac548968c4.zip |
Small code changes and some changes to text
Diffstat (limited to 'Emacs/.config/emacs')
-rw-r--r-- | Emacs/.config/emacs/config.org | 92 |
1 files changed, 51 insertions, 41 deletions
diff --git a/Emacs/.config/emacs/config.org b/Emacs/.config/emacs/config.org index 453e9dc..5b23b1e 100644 --- a/Emacs/.config/emacs/config.org +++ b/Emacs/.config/emacs/config.org @@ -71,6 +71,8 @@ Let's setup a few absolute essentials: + Yes or no questions are less painful (~y-or-n-p~) + Make the "kill ring" work seamlessly with the clipboard + Deleting files or directories "trashes" them instead + + ... but when using ~tramp~ on remote machines, don't try to trash + the file to the local machine trash!!! + Font size based on the machine + Disable mouse usage where possible + Ensure when compiling the Emacs configuration, we only get messages @@ -90,6 +92,7 @@ Let's setup a few absolute essentials: auto-revert-use-notify nil select-enable-clipboard t delete-by-moving-to-trash t + remote-file-name-inhibit-delete-by-moving-to-trash t use-file-dialog nil use-dialog-box nil warning-minimum-level :error) @@ -98,13 +101,13 @@ Let's setup a few absolute essentials: (global-auto-revert-mode) (set-face-attribute 'default nil :height (pcase (system-name) - ("ravenmaiden" 130) + ("rhmaiden" 130) (_ 120)))) #+end_src * Custom functionality and libraries -This is custom Lisp that I or someone else has written to help me out -throughout the configuration. Note that because it's setup so early I -can use it throughout the file. +This is custom Lisp that I or someone else has written which I really +need to setup as early as possible as it's necessary throughout the +rest of the configuration. ** dash Dash is an external library that provides a ton of Emacs Lisp functions that make it a bit nicer to use. @@ -126,7 +129,10 @@ lambda." `(function (lambda nil ,@BODY))) #+end_src ** Clean buffer list -Clean all buffers except for those in ~clean-buffers-keep~. +If you've got a particularly long running Emacs instance, as I usually +do, sometimes you just want to clean all those scratch and temporary +buffers up. Here I define a function which kills all buffers except +for those which have a name in ~clean-buffers-keep~. #+begin_src emacs-lisp (defconst clean-buffers-keep @@ -142,22 +148,21 @@ Clean all buffers except for those in ~clean-buffers-keep~. #'(lambda (buf) (member (buffer-name buf) clean-buffers-keep)))) - (--> - (buffer-list) - (cl-remove-if should-not-kill it) - (mapc #'kill-buffer it)))) + (->> (buffer-list) + (cl-remove-if should-not-kill) + (mapc #'kill-buffer)))) #+end_src ** Custom window management -Generally speaking, applications that have some windowing features do -not have a lot of options for how those windows are placed. Emacs has -a window management system unlike any other piece of software I have -ever used with some incredible capabilities. Unfortunately, as a -result, it is quite complex to use. +Emacs has a window management system unlike any other piece of +software I have ever used, with an ability to be incredibly precise on +how/where you want buffers to be presented in your Emacs instance. +Unfortunately, as a result, it is quite complex to use. +*** How does window management work? The big idea is this table, ~display-buffer-alist~, which associates regular expressions with "actions". The regular expressions are for the name of buffers, and the actions are how the buffer should be -displayed. And there are a *lot* of ways to display buffers. +displayed. Here's an example record: #+begin_src lisp @@ -166,12 +171,14 @@ Here's an example record: (side . bottom)) #+end_src -This matches any buffer named =config.org=, displaying the buffer in a -side window to the bottom. - -What I configure here is a ~use-package~ keyword, ~:display~, which -will allow me to write associations in ~display-buffer-alist~ really -easily. +This states that for any buffer named =config.org=, display the buffer +in a side window (the bottom to be precise). And there are a *lot* +more ways to display buffers. We'd just need to ~add-to-list~ this to +~display-buffer-alist~ and that record will take first precedence. +*** ~:display~ keyword for use-package +What I want to do is make the process of adding records to +~display-buffer-alist~ a bit smooter by integrating it into Emacs' +use-package. 2024-04-23: Found this option ~switch-to-buffer-obey-display-actions~ which makes manual buffer switches obey the same constraints via @@ -198,7 +205,7 @@ Don't do anything to the args here." ',arg)) args))))) #+end_src - +*** Some ~:display~ records Here's some ~:display~ records for buffers that don't really have configuration anywhere else in the file. These serve as good examples on how to use the keyword. @@ -220,10 +227,9 @@ expression. Here's a macro to do that for me. #+begin_src emacs-lisp (defmacro add-multiple-to-list (listvar &rest elements) - (cons - 'progn - (cl-loop for element in elements - collect `(cl-pushnew ,element ,listvar)))) + (->> elements + (mapcar (lambda (el) (list 'cl-pushnew el listvar))) + (cons 'progn))) #+end_src ** Setting number of native jobs Emacs has a native compilation capability to make things /even @@ -367,8 +373,8 @@ set of examples on how to use general. #+begin_src emacs-lisp (use-package emacs :init - ;; this is for `duplicate-dwim' - (setq duplicate-line-final-position -1) + (setq duplicate-line-final-position -1 + async-shell-command-buffer 'new-buffer) :general ("C-x d" #'delete-frame) @@ -689,7 +695,7 @@ From https://jmthornton.net/blog/p/consult-line-isearch-history, taken (substring pattern 2) pattern))) (add-to-history 'regexp-search-ring regexp) - (setq evil-ex-search-pattern (evil-ex-pattern regexp t nil nil)) + (setq evil-ex-search-pattern (evil-ex-make-pattern regexp t nil)) (setq evil-ex-search-direction 'forward)))) (advice-add #'consult-line :after #'consult-line-isearch-history)) @@ -717,7 +723,7 @@ setup some evil binds for company. :hook ((prog-mode-hook eshell-mode-hook) . company-mode) :init - (setq company-idle-delay 0.2 + (setq company-idle-delay 0.25 company-minimum-prefix-length 3 company-require-match nil) :general @@ -2130,20 +2136,20 @@ Tons of stuff, namely: (use-package cc-mode :defer t :hook - (c-mode-hook . auto-fill-mode) - (c++-mode-hook . auto-fill-mode) + ((c-mode-hook c++-mode-hook) . auto-fill-mode) :general - (:keymaps '(c-mode-map - c++-mode-map) + (:keymaps '(c-mode-map c++-mode-map) :states '(normal motion visual) "(" #'c-beginning-of-statement ")" #'c-end-of-statement "{" #'c-beginning-of-defun "}" #'c-end-of-defun) :init - (setq-default c-basic-offset 2) - (setq-default c-auto-newline nil) - (setq-default c-default-style '((other . "user"))) + (setq c-basic-offset 2 + c-auto-newline nil + c-default-style '((other . "user"))) + (add-hook 'c-mode-hook (proc (c-toggle-comment-style -1))) + (add-hook 'c++-mode-hook (proc (c-toggle-comment-style -1))) (defun +cc/copyright-notice () (let* ((lines (split-string (+license/copyright-notice) "\n")) (copyright-line (car lines)) @@ -2356,10 +2362,10 @@ book so it's useful to have some Emacs binds for it. :header-args:emacs-lisp: :tangle no :results none :END: Haskell is a static lazy functional programming language (what a -mouthful). It's quite a beautiful language and really learning it will -change the way you think about programming. However, my preferred -functional language is still unfortunately Lisp so no extra brownie -points there. +mouthful). It's quite a beautiful language and really learning it +will change the way you think about programming. However, my +preferred functional language is still unfortunately Lisp so no extra +brownie points there. Here I configure the REPL for Haskell via the ~haskell-interactive-mode~. I also load my custom package @@ -3418,6 +3424,10 @@ before launching it. (use-package eshell-additions :demand t :load-path "elisp/" + :config + ;; FIXME: Why do I need to double load this? Otherwise +eshell/open doesn't + ;; work as intended when using universal argument. + (load-file (concat user-emacs-directory "elisp/eshell-additions.el")) :general (shell-leader "t" #'+eshell/open) |