Compare commits

...

19 commits

Author SHA1 Message Date
6a57cbfd1f feat: Add custom modeline 2025-05-27 12:51:50 +02:00
015ed00b0f feat: refactor org mode configuration
Defer loading to speed up startup and combine all the configuration of
org mode in the same block.

org-ellipsis is newly added and gives some eye candy when org blocks
are folded.
2025-05-27 12:51:50 +02:00
980ce6750b feat: Add paren package configuration
show-paren-context-when-offscreen is handy to indicate when we are
offscreen for a block of code
2025-05-27 12:51:50 +02:00
28b6168110 fix: refeactor electric pair
It's a built-in package, so we can provide a proper configuration
section using use-package.
2025-05-27 12:51:50 +02:00
c809f480bd fix: load theme after it is actually loaded, not at init time 2025-05-27 12:51:50 +02:00
3591e5704e fix: remove/apply defer only where it makes sense
:defer is to defer loading because some other action (hook/config/...)
will load it when appropriate.
2025-05-27 12:51:50 +02:00
e6e5b5e461 feat: Remove org-roam-ui
Not using it, so don't have it.
2025-05-27 12:51:50 +02:00
a79987f30f chore: stylefix 2025-05-27 12:51:50 +02:00
3f93a19d4b feat: enable corfu iso company-mode
No issues so far when using melpa iso latest git repo (elpaca behaviour)
2025-05-27 12:51:50 +02:00
80b3e4dbc1 feat: enable vertico-cycle and call hook when appropriate 2025-05-27 12:51:50 +02:00
377a5cadff fix: whitespace has a separate built-in package
It has a better hook (whitespace-cleanup) than the barebones delete-trailing-whitespace.
2025-05-27 12:51:50 +02:00
adab1147e0 fix: Docs on keys to use when resizing 2025-05-27 12:51:50 +02:00
7f901b23ae feat: Remove elpaca
I'm not actually using it and it's just bloat at this point.
This speeds up the startup significantly.

Remove what you don't need.
2025-05-27 12:51:50 +02:00
a731bab651 Only pop-up messages buffer if there is an error 2025-05-26 10:59:45 +02:00
2572e8c221 Fix linting warnings in early-init/init.el
There should be no functional changes
2025-05-26 10:59:38 +02:00
6c24da4503 Rework eglot configuration to use built-in package 2025-05-25 17:26:38 +02:00
f2dc1fe496 Add flymake configuration 2025-05-25 17:26:30 +02:00
49a5164f45 Rework isearch configuration using emacs-solo inspiration 2025-05-25 17:26:06 +02:00
22c029b2f4 Remove old eldoc/jsonrpc workarounds and just use built-in packages 2025-05-25 17:25:41 +02:00
3 changed files with 330 additions and 330 deletions

View file

@ -3,115 +3,61 @@
#+CREATOR: Laurens Miers #+CREATOR: Laurens Miers
#+LANGUAGE: en #+LANGUAGE: en
* Elpaca
** Core
#+BEGIN_SRC emacs-lisp
(defvar elpaca-installer-version 0.11)
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git"
:ref nil :depth 1 :inherit ignore
:files (:defaults "elpaca-test.el" (:exclude "extensions"))
:build (:not elpaca--activate-package)))
(let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory))
(build (expand-file-name "elpaca/" elpaca-builds-directory))
(order (cdr elpaca-order))
(default-directory repo))
(add-to-list 'load-path (if (file-exists-p build) build repo))
(unless (file-exists-p repo)
(make-directory repo t)
(when (<= emacs-major-version 28) (require 'subr-x))
(condition-case-unless-debug err
(if-let* ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
((zerop (apply #'call-process `("git" nil ,buffer t "clone"
,@(when-let* ((depth (plist-get order :depth)))
(list (format "--depth=%d" depth) "--no-single-branch"))
,(plist-get order :repo) ,repo))))
((zerop (call-process "git" nil buffer t "checkout"
(or (plist-get order :ref) "--"))))
(emacs (concat invocation-directory invocation-name))
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
"--eval" "(byte-recompile-directory \".\" 0 'force)")))
((require 'elpaca))
((elpaca-generate-autoloads "elpaca" repo)))
(progn (message "%s" (buffer-string)) (kill-buffer buffer))
(error "%s" (with-current-buffer buffer (buffer-string))))
((error) (warn "%s" err) (delete-directory repo 'recursive))))
(unless (require 'elpaca-autoloads nil t)
(require 'elpaca)
(elpaca-generate-autoloads "elpaca" repo)
(let ((load-source-file-function nil)) (load "./elpaca-autoloads"))))
(add-hook 'after-init-hook #'elpaca-process-queues)
(elpaca `(,@elpaca-order))
#+END_SRC
** Use-package integration
#+begin_src emacs-lisp
;; Install use-package support
(elpaca elpaca-use-package
;; Enable use-package :ensure support for Elpaca.
(elpaca-use-package-mode)
)
;; wait to get elpaca use-package integration
(elpaca-wait)
#+end_src
* Built-in packages
** Eldoc
I got the following error message when loading eglot:
#+BEGIN_SRC
eglot failed eldoc installed version (1 13 0) lower than min required 1.14.0 00.239351
#+END_SRC
So install the eldoc package to be sure we have the latest version.
But after installing it, we get a new warning:
#+BEGIN_SRC
⛔ Warning (emacs): eldoc loaded before Elpaca activation
#+END_SRC
This seemed tricker than expected, but found a solution in the github issues of elpaca:
https://github.com/progfolio/elpaca/issues/236
#+BEGIN_SRC emacs-lisp
(use-package eldoc
:preface
;; avoid loading of built-in eldoc, see https://github.com/progfolio/elpaca/issues/236#issuecomment-1879838229
(unload-feature 'eldoc t)
(setq custom-delayed-init-variables '())
(defvar global-eldoc-mode nil)
:demand t
:config
(global-eldoc-mode))
#+END_SRC
** Jsonrpc
After eldoc was taken care of, a new error was reported:
#+BEGIN_SRC
eglot failed jsonrpc installed version (1 0 16) lower than min required 1.0.24 00.280828
#+END_SRC
So let's install the latest one:
#+BEGIN_SRC emacs-lisp
(use-package jsonrpc)
#+END_SRC
** Wait for loading updated packages
Wait until updated built-in packages are fully loaded:
#+BEGIN_SRC emacs-lisp
(elpaca-wait)
#+END_SRC
* General config * General config
#+BEGIN_SRC emacs-lisp
(use-package emacs
:ensure nil
:custom
(inhibit-startup-message t)
:init
(with-current-buffer (get-buffer-create "*scratch*")
(insert (format ";;
;; ██╗ ██╗███████╗██╗ ██╗ ██████╗
;; ██║ ██║██╔════╝██║ ██║ ██╔═══██╗
;; ███████║█████╗ ██║ ██║ ██║ ██║
;; ██╔══██║██╔══╝ ██║ ██║ ██║ ██║
;; ██║ ██║███████╗███████╗███████╗╚██████╔╝
;; ╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝ ╚═════╝
;;
;; ███████╗███╗ ███╗ █████╗ ██████╗███████╗
;; ██╔════╝████╗ ████║██╔══██╗██╔════╝██╔════╝
;; █████╗ ██╔████╔██║███████║██║ ███████╗
;; ██╔══╝ ██║╚██╔╝██║██╔══██║██║ ╚════██║
;; ███████╗██║ ╚═╝ ██║██║ ██║╚██████╗███████║
;; ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚══════╝
;;
;; Loading time : %s
;; Packages : %s
;;
"
(emacs-init-time)
(number-to-string (length package-activated-list)))))
(message (emacs-init-time))
)
#+END_SRC
** Package repos
#+BEGIN_SRC emacs-lisp
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
;; Comment/uncomment this line to enable MELPA Stable if desired. See `package-archive-priorities`
;; and `package-pinned-packages`. Most users will not need or want to do this.
;;(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
(package-initialize)
#+END_SRC
** Use-package
*** Always ensure
#+BEGIN_SRC emacs-lisp
(require 'use-package-ensure)
(setq use-package-always-ensure t)
#+END_SRC
** Bell ** Bell
The audible bell is annoying AF. The audible bell is annoying AF.
@ -126,10 +72,15 @@ The audible bell is annoying AF.
(setq column-number-mode 1) (setq column-number-mode 1)
#+END_SRC #+END_SRC
** Delete trailing whitespaces ** Whitespace cleanup
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(add-hook 'before-save-hook 'delete-trailing-whitespace) (use-package whitespace
:ensure nil
:hook (before-save-hook . whitespace-cleanup)
;; if we wanna remove this hook at any time, eval:
;; (remove-hook 'before-save-hook #'whitespace-cleanup)
)
#+END_SRC #+END_SRC
** Save history and recent files ** Save history and recent files
@ -206,16 +157,60 @@ Use list-buffers bigger brother.
(global-set-key (kbd "M-SPC") 'mark-word) (global-set-key (kbd "M-SPC") 'mark-word)
#+end_src #+end_src
** Eldoc
#+BEGIN_SRC emacs-lisp
(use-package eldoc
:ensure nil
:init
(global-eldoc-mode))
#+END_SRC
** Isearch ** Isearch
Display number of matches: Inspired by [[https://github.com/LionyxML/emacs-solo][emacs-solo]]:
#+begin_src emacs-lisp
(setq-default isearch-lazy-count t) #+BEGIN_SRC emacs-lisp
#+end_src (use-package isearch
:ensure nil
:config
(setq isearch-lazy-count t) ; Display number of matches
(setq lazy-count-prefix-format "(%s/%s) ") ; eye-candy to add braces
(defun isearch-copy-selected-word ()
"Copy the current `isearch` selection to the kill ring."
(interactive)
(when isearch-other-end
(let ((selection (buffer-substring-no-properties isearch-other-end (point))))
(kill-new selection)
(isearch-exit))))
;; Bind `M-w` in isearch to copy the selected word, so M-s M-. M-w
;; does a great job of 'copying the current word under cursor'.
(define-key isearch-mode-map (kbd "M-w") 'isearch-copy-selected-word))
#+END_SRC
Reference that might be interesting for later: Reference that might be interesting for later:
https://endlessparentheses.com/leave-the-cursor-at-start-of-match-after-isearch.html https://endlessparentheses.com/leave-the-cursor-at-start-of-match-after-isearch.html
** Flymake
#+BEGIN_SRC emacs-lisp
(use-package flymake
:ensure nil
:defer t
:hook
(prog-mode-hook . flymake-mode)
:custom
(flymake-show-diagnostics-at-end-of-line 'short)
(flymake-indicator-type 'margins)
(flymake-margin-indicators-string
`((error "!" compilation-error)
(warning "?" compilation-warning)
(note "i" compilation-info))
)
)
#+END_SRC
** Abbrev ** Abbrev
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -252,15 +247,6 @@ Narrow-region/page is a really handy feature, enable it:
(put 'narrow-to-region 'disabled nil) (put 'narrow-to-region 'disabled nil)
#+END_SRC #+END_SRC
** Use-package
*** Always ensure
#+BEGIN_SRC emacs-lisp
(require 'use-package-ensure)
(setq use-package-always-ensure t)
#+END_SRC
** Adaptive cursor width ** Adaptive cursor width
Make cursor the width of the character it is under f.e. full width of a tab. Make cursor the width of the character it is under f.e. full width of a tab.
@ -321,7 +307,7 @@ C-c C-c to apply."
(if (<= (length (window-list)) 1) (if (<= (length (window-list)) 1)
(progn (setq resize-frame nil) (progn (setq resize-frame nil)
(message "Only root frame exists, abort.")) (message "Only root frame exists, abort."))
(message "Use arrow-keys or i/j/k/l to adjust frames."))) (message "Use arrow-keys or C-p/n/f/b to adjust frames.")))
(defun resize-frame-done () (defun resize-frame-done ()
(interactive) (interactive)
@ -335,15 +321,14 @@ C-c C-c to apply."
** Minibuffer ** Minibuffer
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
;; Enable vertico
(use-package vertico (use-package vertico
;; :custom :custom
;; (vertico-scroll-margin 0) ;; Different scroll margin ;; (vertico-scroll-margin 0) ;; Different scroll margin
;; (vertico-count 20) ;; Show more candidates ;; (vertico-count 20) ;; Show more candidates
;; (vertico-resize t) ;; Grow and shrink the Vertico minibuffer ;; (vertico-resize t) ;; Grow and shrink the Vertico minibuffer
;; (vertico-cycle t) ;; Enable cycling for `vertico-next/previous' (vertico-cycle t) ;; Enable cycling for `vertico-next/previous'
:init :hook (after-init . vertico-mode)
(vertico-mode)) )
#+END_SRC #+END_SRC
** Consult ** Consult
@ -471,7 +456,7 @@ C-c C-c to apply."
*** Corfu *** Corfu
#+BEGIN_SRC #+BEGIN_SRC emacs-lisp
(use-package corfu (use-package corfu
;; Optional customizations ;; Optional customizations
:bind (:map corfu-map ("<tab>" . corfu-complete)) :bind (:map corfu-map ("<tab>" . corfu-complete))
@ -500,22 +485,9 @@ C-c C-c to apply."
(global-corfu-mode)) (global-corfu-mode))
#+end_src #+end_src
*** Company-mode
#+BEGIN_SRC emacs-lisp
(use-package company
:config
(define-key prog-mode-map
(kbd "TAB")
#'company-indent-or-complete-common)
:init
(global-company-mode)
)
#+END_SRC
** Orderless ** Orderless
#+begin_src emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package orderless (use-package orderless
:demand t :demand t
:custom :custom
@ -535,11 +507,11 @@ C-c C-c to apply."
;; ) ;; )
;; ) ;; )
) )
#+end_src #+END_SRC
** Marginalia ** Marginalia
#+begin_src emacs-lisp #+BEGIN_SRC emacs-lisp
;; Enable rich annotations using the Marginalia package ;; Enable rich annotations using the Marginalia package
(use-package marginalia (use-package marginalia
;; Bind `marginalia-cycle' locally in the minibuffer. To make the binding ;; Bind `marginalia-cycle' locally in the minibuffer. To make the binding
@ -554,7 +526,7 @@ C-c C-c to apply."
;; the mode gets enabled right away. Note that this forces loading the ;; the mode gets enabled right away. Note that this forces loading the
;; package. ;; package.
(marginalia-mode)) (marginalia-mode))
#+end_src #+END_SRC
* Dired * Dired
@ -592,7 +564,6 @@ Operate on the current line if no region is active.
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package whole-line-or-region (use-package whole-line-or-region
:config :config
(whole-line-or-region-global-mode 1) (whole-line-or-region-global-mode 1)
) )
@ -645,8 +616,7 @@ For the keybindings, we have to defien them in both raw and line mode. From the
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package monokai-theme (use-package monokai-theme
:config
:init
(load-theme 'monokai t) (load-theme 'monokai t)
) )
#+END_SRC #+END_SRC
@ -656,29 +626,25 @@ For the keybindings, we have to defien them in both raw and line mode. From the
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package dashboard (use-package dashboard
:config :config
(add-hook 'elpaca-after-init-hook #'dashboard-insert-startupify-lists)
(add-hook 'elpaca-after-init-hook #'dashboard-initialize)
(dashboard-setup-startup-hook)) (dashboard-setup-startup-hook))
#+end_src #+end_src
* Hydra * Hydra
Install and wait for hydra to be available since we are using it in this init.el : https://github.com/abo-abo/hydra
#+begin_src emacs-lisp
#+BEGIN_SRC emacs-lisp
(use-package hydra (use-package hydra
:ensure (:wait t) :config
) ;; Zoom hydra
#+end_src (defhydra hydra-zoom (global-map "<f1>")
** Text zoom
#+begin_src emacs-lisp
(defhydra hydra-zoom (global-map "<f1>")
"zoom" "zoom"
("g" text-scale-increase "in") ("g" text-scale-increase "in")
("l" text-scale-decrease "out") ("l" text-scale-decrease "out")
) )
#+end_src
)
#+END_SRC
* Zygospore * Zygospore
@ -730,15 +696,34 @@ https://github.com/victorhge/iedit
#+END_SRC #+END_SRC
** Electric pair ** Electric pair
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(add-hook 'prog-mode-hook 'electric-pair-mode) (use-package elec-pair
:ensure nil
:defer t
:hook (prog-mode-hook . electric-pair-mode))
#+END_SRC
** Paren
#+BEGIN_SRC emacs-lisp
(use-package paren
:ensure nil
:hook (after-init-hook . show-paren-mode)
:custom
(show-paren-delay 0)
(show-paren-style 'mixed)
(show-paren-context-when-offscreen t)) ;; show matches within window splits
#+END_SRC #+END_SRC
** Eglot ** Eglot
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package eglot) (use-package eglot
:ensure nil
:custom
(eglot-autoshutdown t)
:init
(setq eglot-stay-out-of '(xref)) (setq eglot-stay-out-of '(xref))
(add-hook 'prog-mode-hook 'eglot-ensure) (add-hook 'prog-mode-hook 'eglot-ensure)
(add-hook 'eglot-managed-mode-hook (lambda () (add-hook 'eglot-managed-mode-hook (lambda ()
@ -746,12 +731,17 @@ https://github.com/victorhge/iedit
(add-hook 'xref-backend-functions 'eglot-xref-backend) (add-hook 'xref-backend-functions 'eglot-xref-backend)
(remove-hook 'xref-backend-functions 'eglot-xref-backend) (remove-hook 'xref-backend-functions 'eglot-xref-backend)
))) )))
)
#+END_SRC #+END_SRC
** Markdown-mode ** Markdown-mode
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package markdown-mode) (use-package markdown-mode
:defer t
)
#+END_SRC #+END_SRC
@ -770,48 +760,22 @@ https://github.com/victorhge/iedit
** Magit ** Magit
*** Transient
Magit depends on this and it seems it's not installed as a dependency, so install it explicitly.
#+BEGIN_SRC emacs-lisp
(use-package transient
:ensure (:wait t)
)
#+END_SRC
*** Core *** Core
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package magit (use-package magit
:ensure (:wait t) :defer t
) )
#+END_SRC #+END_SRC
**** Extra commands
***** Update all submodules
#+BEGIN_SRC emacs-lisp
(transient-define-suffix magit-submodule-update-all ()
"Update all submodules"
:description "Update All git submodule update --init --recursive"
(interactive)
(magit-with-toplevel
(magit-run-git-async "submodule" "update" "--force")))
(transient-append-suffix 'magit-submodule "f"
'("U" magit-submodule-update-all))
#+END_SRC
** Dumb-jump ** Dumb-jump
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package dumb-jump (use-package dumb-jump
:init :init
(add-hook 'xref-backend-functions #'dumb-jump-xref-activate) (add-hook 'xref-backend-functions #'dumb-jump-xref-activate)
) )
#+END_SRC #+END_SRC
** C-programming ** C-programming
@ -841,6 +805,7 @@ Move to the end if the compilation finishes.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package rust-mode (use-package rust-mode
:defer t
:init :init
(setq rust-mode-treesitter-derive t)) (setq rust-mode-treesitter-derive t))
#+END_SRC #+END_SRC
@ -848,13 +813,17 @@ Move to the end if the compilation finishes.
** Zig ** Zig
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package zig-mode) (use-package zig-mode
:defer t
)
#+END_SRC #+END_SRC
** Python ** Python
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package python-mode) (use-package python-mode
:defer t
)
#+END_SRC #+END_SRC
* Multiple cursors * Multiple cursors
@ -891,8 +860,8 @@ https://github.com/remyferre/comment-dwim-2
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package comment-dwim-2 (use-package comment-dwim-2
:config :bind
(global-set-key (kbd "M-;") 'comment-dwim-2) ("M-;" . comment-dwim-2)
) )
#+END_SRC #+END_SRC
@ -908,26 +877,27 @@ https://github.com/remyferre/comment-dwim-2
(add-hook 'project-find-functions #'project-projectile) (add-hook 'project-find-functions #'project-projectile)
) )
#+END_SRC #+END_SRC
* Org * Org
** General config ** General config
*** Super/Sub-scripts
Use ={}= for subscripting:
https://orgmode.org/manual/Subscripts-and-superscripts.html
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(setq org-use-sub-superscripts '{}) (use-package org
#+END_SRC :ensure nil
:defer t
*** Indentation :mode ("\\.org\\'" . org-mode)
:config
Preserve indentation in SRC blocks (setq
;; Start collapsed for speed
#+BEGIN_SRC emacs-lisp org-startup-folded t
(setq org-src-preserve-indentation t) ;; Use ={}= for subscripting: https://orgmode.org/manual/Subscripts-and-superscripts.html
org-use-sub-superscripts '{}
;; Preserve indentation in SRC blocks
org-src-preserve-indentation t
)
;; Ellipsis styling
(setq org-ellipsis " ▼ ")
(set-face-attribute 'org-ellipsis nil :inherit 'default :box nil))
#+END_SRC #+END_SRC
** Org-todo ** Org-todo
@ -947,6 +917,8 @@ Preserve indentation in SRC blocks
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package org-bullets (use-package org-bullets
:defer t
:after org
:config :config
(add-hook 'org-mode-hook (lambda () (org-bullets-mode)))) (add-hook 'org-mode-hook (lambda () (org-bullets-mode))))
#+END_SRC #+END_SRC
@ -955,6 +927,8 @@ Preserve indentation in SRC blocks
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package org-roam (use-package org-roam
:defer t
:after org
:custom :custom
(org-roam-directory "~/projects/notes") (org-roam-directory "~/projects/notes")
(org-roam-completion-everywhere t) (org-roam-completion-everywhere t)
@ -968,27 +942,6 @@ Preserve indentation in SRC blocks
) )
#+END_SRC #+END_SRC
*** UI
#+BEGIN_SRC emacs-lisp
(use-package org-roam-ui
:ensure
(:host github :repo "org-roam/org-roam-ui" :branch "main" :files ("*.el" "out"))
:after org-roam
;; normally we'd recommend hooking orui after org-roam, but since org-roam does not have
;; a hookable mode anymore, you're advised to pick something yourself
;; if you don't care about startup time, use
;; :hook (after-init . org-roam-ui-mode)
:config
(setq org-roam-ui-sync-theme t
org-roam-ui-follow t
org-roam-ui-update-on-save t
org-roam-ui-open-on-start t)
;; Start UI
;; (org-roam-ui-mode)
)
#+END_SRC
*** Consult *** Consult
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
@ -1029,6 +982,8 @@ Preserve indentation in SRC blocks
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package org-download (use-package org-download
:defer t
:after org
:config :config
(add-hook 'dired-mode-hook 'org-download-enable) (add-hook 'dired-mode-hook 'org-download-enable)
) )
@ -1047,6 +1002,36 @@ Preserve indentation in SRC blocks
* Custom * Custom
** Modeline
#+BEGIN_SRC emacs-lisp
(setq-default mode-line-format
'("%e" " "
;; (:propertize " " display (raise +0.1)) ;; Top padding
;; (:propertize " " display (raise -0.1)) ;; Bottom padding
(:propertize "𝝮 " face font-lock-keyword-face)
(:propertize
("" mode-line-mule-info mode-line-client mode-line-modified mode-line-remote mode-line-window-dedicated))
mode-line-frame-identification
mode-line-buffer-identification
" "
mode-line-position
mode-line-format-right-align
" "
(project-mode-line project-mode-line-format)
" "
(vc-mode vc-mode)
" "
mode-line-modes
mode-line-misc-info
mode-line-end-spaces)
project-mode-line t
mode-line-buffer-identification '(" %b")
mode-line-position-column-line-format '(" %l:%c"))
#+END_SRC
** Org-roam ** Org-roam
Inspired by https://github.com/org-roam/org-roam/wiki/User-contributed-Tricks#filter-by-a-tag . Inspired by https://github.com/org-roam/org-roam/wiki/User-contributed-Tricks#filter-by-a-tag .

View file

@ -1,9 +1,18 @@
;;; early-init.el --- Early Init -*- lexical-binding: t; -*-
;;; Commentary:
;; Early init configuration for Emacs Solo
;;
;;; Code:
;; Only care about errors in *Messages* buffer
(setq warning-minimum-level :error)
;; We control when packages are enabled
(setq package-enable-at-startup nil) (setq package-enable-at-startup nil)
(provide 'early-init)
;; Local Variables: ;;; early-init.el ends here
;; no-byte-compile: t
;; no-native-compile: t
;; no-update-autoloads: t
;; End:

View file

@ -1,3 +1,9 @@
;;; init.el --- Init -*- lexical-binding: t; -*-
;;; Commentary:
;;; Load init files
;;; Increase garbage collection threshold during init but leave it to the default value after ;;; Increase garbage collection threshold during init but leave it to the default value after
;;; There are a LOT of articles/sites/... discussing this: ;;; There are a LOT of articles/sites/... discussing this:
;;; https://bling.github.io/blog/2016/01/18/why-are-you-changing-gc-cons-threshold/ ;;; https://bling.github.io/blog/2016/01/18/why-are-you-changing-gc-cons-threshold/