From cde06cd98dbe8627adadc4eae926d3727b8a5de3 Mon Sep 17 00:00:00 2001 From: Gergely Polonkai Date: Sun, 15 Oct 2023 06:51:45 +0200 Subject: [PATCH] Move Emacs default settings to (almost) the top --- configuration.org | 214 +++++++++++++++++++++++----------------------- 1 file changed, 106 insertions(+), 108 deletions(-) diff --git a/configuration.org b/configuration.org index b2f3810..b057b3b 100644 --- a/configuration.org +++ b/configuration.org @@ -669,14 +669,15 @@ From [[http://whattheemacsd.com/file-defuns.el-02.html][whattheemacsd.org]]. (message "File '%s' successfully removed" filename))))) #+end_src -* Emacs configuration +* Set up the very basics -** Set up the really basic things +Now that we have package management configured we can set up defaults more easily. This includes every builtin packages, font faces, and the like. #+begin_src emacs-lisp (use-package emacs :ensure nil :init + ;; Required for Consult/Vertico (defun crm-indicator (args) (cons (format "[CRM%s] %s" (replace-regexp-in-string @@ -685,6 +686,11 @@ From [[http://whattheemacsd.com/file-defuns.el-02.html][whattheemacsd.org]]. (car args)) (cdr args))) (advice-add #'completing-read-multiple :filter-args #'crm-indicator) + (setq frame-title-format '((:eval (concat system-name + ": " + (if (buffer-file-name) + (abbreviate-file-name (buffer-file-name)) + "%b"))))) :custom (user-full-name "Gergely Polonkai") (user-mail-address "gergely@polonkai.eu") @@ -700,7 +706,29 @@ From [[http://whattheemacsd.com/file-defuns.el-02.html][whattheemacsd.org]]. (minibuffer-setup . cursor-intangible-mode)) #+end_src -** Set up some default faces +** Set Org’s main directory + +Since a lot of packages (org-projectile, org-caldav, etc.) rely on it, it needs to be set as early as possible. + +#+begin_src emacs-lisp +(setq org-directory (expand-file-name "NextCloud/orgmode" user-documents-directory)) +#+end_src + +** Set up my personal keymap + +I set it up at the beginning so i can use it with ~use-package~ invocations from early on + +This might (should?) become a [[*general][general]] map later. + +#+begin_src emacs-lisp +(defvar gpolonkai/pers-map (make-sparse-keymap) + "My own, personal, keymap!") +(define-prefix-command 'gpolonkai/pers-map) +(define-key ctl-x-map "t" 'gpolonkai/pers-map) +(define-key global-map (kbd "C-t") 'gpolonkai/pers-map) +#+end_src + +** Set up some faces #+begin_src emacs-lisp (use-package faces @@ -710,7 +738,7 @@ From [[http://whattheemacsd.com/file-defuns.el-02.html][whattheemacsd.org]]. (trailing-whitespace ((t (:inherit nil :background "red3"))))) #+end_src -** Use ligatures +*** Fira Code comes with nice ligatures, let’s use them! #+begin_src emacs-lisp (use-package ligature @@ -784,49 +812,40 @@ From [[http://whattheemacsd.com/file-defuns.el-02.html][whattheemacsd.org]]. (global-ligature-mode t)) #+end_src -** Set up my personal keymap +** Set the default font and configure font resizing -I set it up early so i can use it in ~use-package~ calls immediately. +Before this can be used, make sure the [[https://zhm.github.io/symbola/][Symbola]] font is installed. -#+BEGIN_SRC emacs-lisp -(defvar gpolonkai/pers-map (make-sparse-keymap) - "My own, personal, keymap!") -(define-prefix-command 'gpolonkai/pers-map) -(define-key ctl-x-map "t" 'gpolonkai/pers-map) -(define-key global-map (kbd "C-t") 'gpolonkai/pers-map) -#+END_SRC +#+begin_src emacs-lisp +(defun gpolonkai/set-font-size (frame) + (when (display-graphic-p frame) + (set-face-attribute 'default frame :font "Fira Code Retina-14") + (set-frame-font "Fira Code Retina-14" t (list frame)))) -** I really don’t want to type more than i really must… +(defun --set-emoji-font (frame) + "Adjust the font setting of FRAME so Emacs can display Emoji properly." + (when (display-graphic-p frame) + (set-fontset-font t 'symbol + (font-spec :family "Symbola") + frame 'prepend) + (set-fontset-font t 'unicode + "Noto Emoji" + nil 'append))) -#+BEGIN_SRC emacs-lisp -(defalias 'yes-or-no-p 'y-or-n-p) -#+END_SRC +(add-hook 'after-make-frame-functions 'gpolonkai/set-font-size) +(add-hook 'after-make-frame-functions '--set-emoji-font) + +(gpolonkai/set-font-size nil) +(--set-emoji-font nil) +#+end_src ** Set UTF-8 as the default encoding Just to make sure, although most Linux DEs do this for me. -#+BEGIN_SRC emacs-lisp +#+begin_src emacs-lisp (set-language-environment "UTF-8") (set-default-coding-systems 'utf-8) -#+END_SRC - -** Set Org’s main directory - -Since a lot of packages use it as their base (org-projectile, org-caldav, etc.), i need -it as early as possible. - -#+BEGIN_SRC emacs-lisp -(setq org-directory (expand-file-name "NextCloud/orgmode" user-documents-directory)) -#+END_SRC - -** ~simple.el~ settings - -#+begin_src emacs-lisp -(use-package simple - :ensure nil - :custom - (column-number-mode t)) #+end_src ** Default frame settings @@ -835,9 +854,60 @@ it as early as possible. (use-package frame :ensure nil :custom + ;; Make that cursor blink! (blink-cursor-mode t)) #+end_src +** I really don’t want to type more than i really must… + +#+begin_src emacs-lisp +(defalias 'yes-or-no-p 'y-or-n-p) +#+end_src + +** Tweak window chrome, AKA let’s set up the UI + +Turn off the scroll bar (that’s why Nyan-cat is here), the toolbar (I don’t really use it), and +the menu bar (I rarely use it, and in those rare occasions I can simply turn it on.) + +Also, maximise the frame. + +#+begin_src emacs-lisp +(tool-bar-mode 0) +(menu-bar-mode 0) +(when window-system + (scroll-bar-mode -1)) + +(set-frame-parameter nil 'fullscreen 'maximized) +#+end_src + +** Enable all the commands! + +These are disabled for a reason, but i’m a rockstar, so who cares‽ + +#+begin_src emacs-lisp +(put 'downcase-region 'disabled nil) +(put 'upcase-region 'disabled nil) +(put 'erase-buffer 'disabled nil) +(put 'narrow-to-region 'disabled nil) +(put 'narrow-to-page 'disabled nil) +(put 'set-goal-column 'disabled nil) +(put 'scroll-left 'disabled nil) +(put 'dired-find-alternate-file 'disabled nil) +(put 'Info-edit 'disabled nil) +(put 'list-timers 'disabled nil) +#+end_src + +* Emacs configuration + +** ~simple.el~ settings + +#+begin_src emacs-lisp +(use-package simple + :ensure nil + :custom + (column-number-mode t)) +#+end_src + * Custom commands and functions ** Frame manipulation @@ -961,51 +1031,6 @@ Let’s see if i can get my brain more organised this way… (org-roam-ui-open-on-start nil)) #+end_src -* UI preferences - -** Tweak window chrome - -Turn off the scroll bar (that’s why Nyan-cat is here), the toolbar (I don’t really use it), and -the menu bar (I rarely use it, and in those rare occasions I can simply turn it on.) - -Also, maximise the frame. - -#+BEGIN_SRC emacs-lisp -(tool-bar-mode 0) -(menu-bar-mode 0) -(when window-system - (scroll-bar-mode -1)) - -(set-frame-parameter nil 'fullscreen 'maximized) -#+END_SRC - -** Set the default font and configure font resizing - -Before this can be used, make sure the [[https://zhm.github.io/symbola/][Symbola]] font is installed. - -#+BEGIN_SRC emacs-lisp -(defun gpolonkai/set-font-size (frame) - (when (display-graphic-p frame) - (set-face-attribute 'default frame :font "Fira Code Retina-14") - (set-frame-font "Fira Code Retina-14" t (list frame)))) - -(defun --set-emoji-font (frame) - "Adjust the font setting of FRAME so Emacs can display Emoji properly." - (when (display-graphic-p frame) - (set-fontset-font t 'symbol - (font-spec :family "Symbola") - frame 'prepend) - (set-fontset-font t 'unicode - "Noto Emoji" - nil 'append))) - -(add-hook 'after-make-frame-functions 'gpolonkai/set-font-size) -(add-hook 'after-make-frame-functions '--set-emoji-font) - -(gpolonkai/set-font-size nil) -(--set-emoji-font nil) -#+END_SRC - * Set up global minor modes provided by Emacs ** Pretty lambdas @@ -1028,39 +1053,12 @@ And set up all the pretty symbols. ("or" . ?∨))) #+END_SRC -Finally, set the frame title to the current file name - -#+BEGIN_SRC emacs-lisp -(setq frame-title-format '((:eval (concat system-name - ": " - (if (buffer-file-name) - (abbreviate-file-name (buffer-file-name)) - "%b"))))) -#+END_SRC - ** Treat soft line breaks as hard ones in textual modes #+BEGIN_SRC emacs-lisp (add-hook 'text-mode-hook (lambda () (visual-line-mode t))) #+END_SRC -* Enable disabled commands - -Because i’m a rock star like that. - -#+BEGIN_SRC emacs-lisp -(put 'downcase-region 'disabled nil) -(put 'upcase-region 'disabled nil) -(put 'erase-buffer 'disabled nil) -(put 'narrow-to-region 'disabled nil) -(put 'narrow-to-page 'disabled nil) -(put 'set-goal-column 'disabled nil) -(put 'scroll-left 'disabled nil) -(put 'dired-find-alternate-file 'disabled nil) -(put 'Info-edit 'disabled nil) -(put 'list-timers 'disabled nil) -#+END_SRC - * Load some built-in libraries ** ~thingatpt~