X-Git-Url: https://git.shemshak.org/gitweb.cgi/~bandali/configs/blobdiff_plain/126528935bb71449df251970fe367849a62beb92..de000e57d29fb5fb0f4f77531189039c4d88bf3a:/init.org?ds=inline diff --git a/init.org b/init.org index 42fba09..1d6b1f9 100644 --- a/init.org +++ b/init.org @@ -207,6 +207,13 @@ does that (and more). See =straight-package-neutering-mode=. *** =straight.el= +#+begin_quote +Next-generation, purely functional package manager for the Emacs +hacker. +#+end_quote + +=straight.el= allows me to have a fully reproducible Emacs setup. + #+begin_src emacs-lisp (setq straight-repository-branch "develop") @@ -226,6 +233,19 @@ does that (and more). See =straight-package-neutering-mode=. (setq straight-use-package-by-default t) #+end_src +Since we enable =straight.el='s =straight-use-package-by-default= +integration, we will define a =use-feature= for plain ole +=use-package= without any of the =straight.el= stuff. + +#+begin_src emacs-lisp +(defmacro use-feature (name &rest args) + "Like `use-package', but with `straight-use-package-by-default' disabled." + (declare (indent defun)) + `(use-package ,name + :straight nil +,@args)) +#+end_src + *** COMMENT Borg #+begin_quote @@ -330,8 +350,7 @@ definitely don't want it mixing with =init.el=. So, here; let's give it it's own file. While at it, treat themes as safe. #+begin_src emacs-lisp -(use-package custom - :straight nil +(use-feature custom :no-require t :config (setq custom-file (no-littering-expand-etc-file-name "custom.el")) @@ -385,8 +404,7 @@ login; so starting the server from inside Emacs is good enough for me. See [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.html#Emacs-Server][Using Emacs as a Server]]. #+begin_src emacs-lisp -(use-package server - :straight nil +(use-feature server :defer 1 :config (or (server-running-p) (server-mode))) #+end_src @@ -700,6 +718,12 @@ for this. (setq-default cursor-type 'bar) #+end_src +*** Allow scrolling in Isearch + +#+begin_src emacs-lisp +(setq isearch-allow-scroll t) +#+end_src + ** Bindings #+begin_src emacs-lisp @@ -750,7 +774,18 @@ customizing it. 'auto-compile-inhibit-compile-detached-git-head)) #+end_src -*** Org +*** [[https://orgmode.org/][Org]] + +#+begin_quote +Org mode is for keeping notes, maintaining TODO lists, planning +projects, and authoring documents with a fast and effective plain-text +system. +#+end_quote + +In short, my favourite way of life. + +First, we have to resort to a [[https://github.com/raxod502/straight.el#installing-org-with-straightel][hack]] to be able to use the correct +latest version of Org from upstream. #+begin_src emacs-lisp (use-package git) @@ -781,25 +816,20 @@ customizing it. "--abbrev=0" "HEAD"))))) - (provide 'org-version) - - (use-package org - :defer 0.8) ; or org-plus-contrib if desired +(provide 'org-version) #+end_src -*** COMMENT [[https://orgmode.org/][Org mode]] +We will use the =org-plus-contrib= package to get the whole deal: -#+begin_quote -Org mode is for keeping notes, maintaining TODO lists, planning -projects, and authoring documents with a fast and effective plain-text -system. -#+end_quote +#+begin_src emacs-lisp +(straight-use-package 'org-plus-contrib) +#+end_src -In short, my favourite way of life. +And here's where my actual Org configurations begin: #+begin_src emacs-lisp -(use-package org - :defer 1 +(use-feature org + :defer 0.5 :config (setq org-src-tab-acts-natively t org-src-preserve-indentation nil @@ -829,7 +859,7 @@ In short, my favourite way of life. '(org-block ((t (:background "#1d1f21")))) '(org-latex-and-related ((t (:foreground "#b294bb"))))) -(use-package ox-latex +(use-feature ox-latex :after ox :config (setq org-latex-listings 'listings @@ -846,12 +876,8 @@ In short, my favourite way of life. ("\\subparagraph{%s}" . "\\subparagraph*{%s}")) t)) -(use-package ox-beamer +(use-feature ox-beamer :after ox) - -(use-package orgalist - :after message - :hook (message-mode . orgalist-mode)) #+end_src **** asynchronous tangle @@ -931,7 +957,19 @@ Not just how I do git, but /the/ way to do git. :custom-face (magit-diff-file-heading ((t (:weight normal))))) #+end_src -*** COMMENT [[https://github.com/abo-abo/swiper][Ivy]] (and friends) +*** recentf + +Recently opened files. + +#+begin_src emacs-lisp +(use-feature recentf + :defer 0.5 + :config + (add-to-list 'recentf-exclude "^/\\(?:ssh\\|su\\|sudo\\)?:") + (setq recentf-max-saved-items 40)) +#+end_src + +*** [[https://github.com/abo-abo/swiper][Ivy]] (and friends) #+begin_quote Ivy - a generic completion frontend for Emacs, Swiper - isearch with @@ -944,7 +982,7 @@ There's no way I could top that, so I won't attempt to. #+begin_src emacs-lisp (use-package ivy - :defer 1 + :defer 0.6 :bind (:map ivy-minibuffer-map ([escape] . keyboard-escape-quit) @@ -965,6 +1003,7 @@ There's no way I could top that, so I won't attempt to. #+begin_src emacs-lisp (use-package swiper + :after ivy :bind (("C-s" . swiper) ("C-r" . swiper) ("C-S-s" . isearch-forward))) @@ -974,7 +1013,7 @@ There's no way I could top that, so I won't attempt to. #+begin_src emacs-lisp (use-package counsel - :defer 1 + :after ivy :bind (([remap execute-extended-command] . counsel-M-x) ([remap find-file] . counsel-find-file) ("s-r" . counsel-recentf) @@ -987,10 +1026,10 @@ There's no way I could top that, so I won't attempt to. (defalias 'locate #'counsel-locate)) #+end_src -*** COMMENT eshell +*** eshell #+begin_src emacs-lisp -(use-package eshell +(use-feature eshell :defer 1 :commands eshell :bind ("C-c a s e" . eshell) @@ -1024,10 +1063,10 @@ There's no way I could top that, so I won't attempt to. (eshell-input-filter 'eshell-input-filter-initial-space)) #+end_src -*** COMMENT Ibuffer +*** Ibuffer #+begin_src emacs-lisp -(use-package ibuffer +(use-feature ibuffer :defer t :bind (("C-x C-b" . ibuffer-other-window) @@ -1095,10 +1134,10 @@ There's no way I could top that, so I won't attempt to. :hook (ibuffer . (lambda () (ibuffer-switch-to-saved-filter-groups "default")))) #+end_src -*** COMMENT Outline +*** Outline #+begin_src emacs-lisp -(use-package outline +(use-feature outline :defer t :hook (prog-mode . outline-minor-mode) :bind @@ -1117,27 +1156,13 @@ There's no way I could top that, so I won't attempt to. ("s" . outline-show-subtree))) #+end_src -* COMMENT Borg's =layer/essentials= -:PROPERTIES: -:CUSTOM_ID: borg-essentials -:END: - -TODO: break this giant source block down into individual org sections. +*** Dired #+begin_src emacs-lisp -(use-package dash - :config (dash-enable-font-lock)) - -(use-package diff-hl - :config - (setq diff-hl-draw-borders nil) - (global-diff-hl-mode) - (add-hook 'magit-post-refresh-hook 'diff-hl-magit-post-refresh t)) - -(use-package ls-lisp +(use-feature ls-lisp :custom (ls-lisp-dirs-first t)) -(use-package dired +(use-feature dired :defer t :config (setq dired-listing-switches "-alh" @@ -1173,75 +1198,122 @@ TODO: break this giant source block down into individual org sections. (interactive) (a/dired-start-process "zathura")))) :hook (dired-mode . dired-hide-details-mode)) +#+end_src -(use-package eldoc - :when (version< "25" emacs-version) - :config (global-eldoc-mode)) +*** Help -(use-package help +#+begin_src emacs-lisp +(use-feature help :defer t :config (temp-buffer-resize-mode) (setq help-window-select t)) +#+end_src -(progn ; `isearch' - (setq isearch-allow-scroll t)) +*** Tramp -(use-package lisp-mode +#+begin_src emacs-lisp +(use-feature tramp + :defer t :config - (add-hook 'emacs-lisp-mode-hook 'outline-minor-mode) - (add-hook 'emacs-lisp-mode-hook 'reveal-mode) - (defun indent-spaces-mode () - (setq indent-tabs-mode nil)) - (add-hook 'lisp-interaction-mode-hook #'indent-spaces-mode)) + (add-to-list 'tramp-default-proxies-alist '(nil "\\`root\\'" "/ssh:%h:")) + (add-to-list 'tramp-default-proxies-alist '("localhost" nil nil)) + (add-to-list 'tramp-default-proxies-alist + (list (regexp-quote (system-name)) nil nil))) +#+end_src -(use-package man +*** Dash + +#+begin_src emacs-lisp +(use-package dash :defer t - :config (setq Man-width 80)) + :config (dash-enable-font-lock)) +#+end_src -(use-package paren - :config (show-paren-mode)) +* Editing +:PROPERTIES: +:CUSTOM_ID: editing +:END: -(use-package prog-mode - :config (global-prettify-symbols-mode) - (defun indicate-buffer-boundaries-left () - (setq indicate-buffer-boundaries 'left)) - (add-hook 'prog-mode-hook #'indicate-buffer-boundaries-left)) +** =diff-hl= -(use-package recentf - :defer 0.5 +Highlight uncommitted changes in the left fringe. + +#+begin_src emacs-lisp +(use-package diff-hl :config - (add-to-list 'recentf-exclude "^/\\(?:ssh\\|su\\|sudo\\)?:") - (setq recentf-max-saved-items 40)) + (setq diff-hl-draw-borders nil) + (global-diff-hl-mode) + :hook (magit-post-refresh . diff-hl-magit-post-refresh)) +#+end_src + +** ElDoc + +Display Lisp objects at point in the echo area. -(use-package savehist +#+begin_src emacs-lisp +(use-feature eldoc + :when (version< "25" emacs-version) + :config (global-eldoc-mode)) +#+end_src + +** paren + +Highlight matching parens. + +#+begin_src emacs-lisp +(use-feature paren + :config (show-paren-mode)) +#+end_src + +** =savehist= + +Save minibuffer history. + +#+begin_src emacs-lisp +(use-feature savehist :config (savehist-mode)) +#+end_src -(use-package saveplace +** =saveplace= + +Automatically save place in each file. + +#+begin_src emacs-lisp +(use-feature saveplace :when (version< "25" emacs-version) :config (save-place-mode)) +#+end_src -(use-package simple - :config (column-number-mode)) +** =prog-mode= -(progn ; `text-mode' - (add-hook 'text-mode-hook #'indicate-buffer-boundaries-left) - (add-hook 'text-mode-hook #'abbrev-mode)) +#+begin_src emacs-lisp +(use-feature prog-mode + :config (global-prettify-symbols-mode) + (defun indicate-buffer-boundaries-left () + (setq indicate-buffer-boundaries 'left)) + (add-hook 'prog-mode-hook #'indicate-buffer-boundaries-left)) +#+end_src -(use-package tramp - :defer t - :config - (add-to-list 'tramp-default-proxies-alist '(nil "\\`root\\'" "/ssh:%h:")) - (add-to-list 'tramp-default-proxies-alist '("localhost" nil nil)) - (add-to-list 'tramp-default-proxies-alist - (list (regexp-quote (system-name)) nil nil))) +** =text-mode= +#+begin_src emacs-lisp +(use-feature text-mode + :hook ((text-mode . indicate-buffer-boundaries-left) + (text-mode . abbrev-mode))) #+end_src -* COMMENT Editing -:PROPERTIES: -:CUSTOM_ID: editing -:END: +** =lisp-mode= + +#+begin_src emacs-lisp +(use-feature lisp-mode + :config + (add-hook 'emacs-lisp-mode-hook 'outline-minor-mode) + (add-hook 'emacs-lisp-mode-hook 'reveal-mode) + (defun indent-spaces-mode () + (setq indent-tabs-mode nil)) + (add-hook 'lisp-interaction-mode-hook #'indent-spaces-mode)) +#+end_src ** Company @@ -1262,10 +1334,7 @@ TODO: break this giant source block down into individual org sections. (global-company-mode t)) #+end_src -* COMMENT Syntax and spell checking -:PROPERTIES: -:CUSTOM_ID: syntax-spell-checking -:END: +** Flycheck #+begin_src emacs-lisp (use-package flycheck @@ -1686,6 +1755,14 @@ treemacs :CUSTOM_ID: emacs-enhancements :END: +** man + +#+begin_src emacs-lisp +(use-feature man + :defer t + :config (setq Man-width 80)) +#+end_src + ** [[https://github.com/justbur/emacs-which-key][which-key]] #+begin_quote @@ -1897,6 +1974,14 @@ Make =*scratch*= and =*Messages*= unkillable. Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. +** orgalist + +#+begin_src emacs-lisp +(use-package orgalist + :after message + :hook (message-mode . orgalist-mode)) +#+end_src + ** typo.el #+begin_src emacs-lisp