X-Git-Url: https://git.shemshak.org/gitweb.cgi/~bandali/configs/blobdiff_plain/3f74e7b36898d38f3794afb6acc325ccbf673a83..ab7314d9802fd1cf56ffcfe1901afd4fb8587b20:/init.org diff --git a/init.org b/init.org index 83ae614..ee75041 100644 --- a/init.org +++ b/init.org @@ -297,6 +297,20 @@ integration, we will define a =use-feature= for plain ole ,@args)) #+end_src +Also, here's a useful function for reloading the init file (useful +after running =straight-check-all=: + +#+begin_src emacs-lisp +(defun a/reload-init () + "Reload init.el." + (interactive) + (straight-transaction + (straight-mark-transaction-as-init) + (load (if a/byte-compiled-init + (concat (file-name-sans-extension user-init-file) ".elc") + user-init-file)))) +#+end_src + *** =use-package= #+begin_quote @@ -320,9 +334,10 @@ and without compromising on performance. use-package-expand-minimally t)) (setq use-package-always-defer t) +(require 'bind-key) #+end_src -*** Epkg +*** COMMENT Epkg #+begin_quote Browse the Emacsmirror package database @@ -333,7 +348,6 @@ database, low-level functions for querying the database, and a =package.el=-like user interface for browsing the available packages. #+begin_src emacs-lisp -(require 'bind-key) (use-package epkg :commands (epkg-list-packages epkg-describe-package) :bind @@ -400,7 +414,7 @@ in my shell. #+begin_src emacs-lisp (use-package exec-path-from-shell - :defer 1 + :defer 0.4 :init (setq exec-path-from-shell-arguments nil exec-path-from-shell-check-startup-files nil) @@ -431,7 +445,7 @@ See [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.htm #+begin_src emacs-lisp (use-feature server - :defer 1 + :defer 0.4 :config (or (server-running-p) (server-mode))) #+end_src @@ -507,14 +521,14 @@ buffers and/or modes. scroll-preserve-screen-position 1) (use-feature mwheel - :defer 1 + :defer 0.4 :config (setq mouse-wheel-scroll-amount '(1 ((shift) . 1)) ; one line at a time mouse-wheel-progressive-speed nil ; don't accelerate scrolling mouse-wheel-follow-mouse t)) ; scroll window under mouse (use-feature pixel-scroll - :defer 1 + :defer 0.4 :config (pixel-scroll-mode 1)) #+end_src @@ -820,7 +834,8 @@ While at it, let's bind a few for some =straight-*= functions too: ("f" . straight-freeze-versions) ("t" . straight-thaw-versions) ("P" . straight-prune-build) - ("r" . straight-get-recipe) + ("g" . straight-get-recipe) + ("r" . a/reload-init) ;; M-x ^straight-.*-all$ ("a c" . straight-check-all) ("a f" . straight-fetch-all) @@ -873,41 +888,6 @@ system. 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) - - (defun org-git-version () - "The Git version of org-mode. - Inserted by installing org-mode or when a release is made." - (require 'git) - (let ((git-repo (expand-file-name - "straight/repos/org/" user-emacs-directory))) - (string-trim - (git-run "describe" - "--match=release\*" - "--abbrev=6" - "HEAD")))) - - (defun org-release () - "The release version of org-mode. - Inserted by installing org-mode or when a release is made." - (require 'git) - (let ((git-repo (expand-file-name - "straight/repos/org/" user-emacs-directory))) - (string-trim - (string-remove-prefix - "release_" - (git-run "describe" - "--match=release\*" - "--abbrev=0" - "HEAD"))))) - -(provide 'org-version) -#+end_src - We will use the =org-plus-contrib= package to get the whole deal: #+begin_src emacs-lisp @@ -918,23 +898,29 @@ And here's where my actual Org configurations begin: #+begin_src emacs-lisp (use-feature org - :defer 2 + :defer 0.5 :config (setq org-src-tab-acts-natively t org-src-preserve-indentation nil org-edit-src-content-indentation 0 - org-email-link-description-format "Email %c: %s" ; %.30s + org-link-email-description-format "Email %c: %s" ; %.30s org-highlight-latex-and-related '(entities) org-use-speed-commands t org-startup-folded 'content org-catch-invisible-edits 'show-and-error org-log-done 'time) (add-to-list 'org-structure-template-alist '("L" . "src emacs-lisp") t) - :bind (:map org-mode-map ("M-L" . org-insert-last-stored-link)) + :bind + (("C-c a o a" . org-agenda) + :map org-mode-map + ("M-L" . org-insert-last-stored-link)) :hook ((org-mode . org-indent-mode) (org-mode . auto-fill-mode) (org-mode . flyspell-mode)) :custom + (org-agenda-files '("~/usr/org/todos/personal.org" + "~/usr/org/todos/masters.org")) + (org-agenda-start-on-weekday 0) (org-latex-packages-alist '(("" "listings") ("" "color"))) :custom-face '(org-block-begin-line ((t (:foreground "#5a5b5a" :background "#1d1f21")))) @@ -1027,7 +1013,7 @@ Not just how I do git, but /the/ way to do git. #+begin_src emacs-lisp (use-package magit - :defer 2 + :defer 0.5 :bind (("C-x g" . magit-status) ("s-g s" . magit-status) ("s-g l" . magit-log-buffer-file)) @@ -1051,7 +1037,7 @@ Recently opened files. #+begin_src emacs-lisp (use-feature recentf - :defer 0.5 + :defer 0.2 :config (add-to-list 'recentf-exclude "^/\\(?:ssh\\|su\\|sudo\\)?:") (setq recentf-max-saved-items 40)) @@ -1082,7 +1068,7 @@ There's no way I could top that, so I won't attempt to. #+begin_src emacs-lisp (use-package ivy - :defer 0.6 + :defer 0.3 :bind (:map ivy-minibuffer-map ([escape] . keyboard-escape-quit) @@ -1130,7 +1116,7 @@ There's no way I could top that, so I won't attempt to. #+begin_src emacs-lisp (use-feature eshell - :defer 2 + :defer 0.5 :commands eshell :bind ("C-c a s e" . eshell) :config @@ -1413,7 +1399,7 @@ Automatically save place in each file. #+begin_src emacs-lisp (use-package company - :defer 3 + :defer 0.6 :bind (:map company-active-map ([tab] . company-complete-common-or-cycle) @@ -1432,7 +1418,7 @@ Automatically save place in each file. #+begin_src emacs-lisp (use-package flycheck - :defer 3 + :defer 0.6 :hook (prog-mode . flycheck-mode) :bind (:map flycheck-mode-map @@ -1447,7 +1433,7 @@ Automatically save place in each file. ;; http://endlessparentheses.com/ispell-and-apostrophes.html (use-package ispell - :defer 3 + :defer 0.6 :config ;; ’ can be part of a word (setq ispell-local-dictionary-alist @@ -1509,7 +1495,7 @@ Automatically save place in each file. #+begin_src emacs-lisp (eval-when-compile (defvar lean-mode-map)) (use-package lean-mode - :defer 1 + :defer 0.4 :bind (:map lean-mode-map ("S-SPC" . company-complete)) :config @@ -1834,7 +1820,7 @@ treemacs :after (treemacs)) #+end_src -*** eclim +*** COMMENT eclim #+begin_src emacs-lisp (use-package eclim @@ -1888,7 +1874,7 @@ Emacs package that displays available keybindings in popup #+begin_src emacs-lisp (use-package which-key - :defer 1 + :defer 0.4 :config (which-key-add-key-based-replacements ;; prefixes for global prefixes and minor modes @@ -1905,9 +1891,10 @@ Emacs package that displays available keybindings in popup ;; prefixes for my personal bindings "C-c a" "applications" "C-c a e" "erc" + "C-c a o" "org" "C-c a s" "shells" "C-c p" "package-management" - "C-c p e" "package-management/epkg" + ;; "C-c p e" "package-management/epkg" "C-c p s" "straight.el" "C-c psa" "all" "C-c psp" "package" @@ -2003,7 +1990,7 @@ Emacs package that displays available keybindings in popup #+begin_src emacs-lisp (use-package crux ; results in Waiting for git... [2 times] - :defer 1 + :defer 0.4 :bind (("C-c b k" . crux-kill-other-buffers) ("C-c d" . crux-duplicate-current-line-or-region) ("C-c D" . crux-duplicate-and-comment-current-line-or-region) @@ -2049,7 +2036,7 @@ Emacs package that displays available keybindings in popup #+begin_src emacs-lisp (use-package helpful - :defer 3 + :defer 0.6 :bind (("C-S-h c" . helpful-command) ("C-S-h f" . helpful-callable) ; helpful-function @@ -2064,7 +2051,7 @@ Make =*scratch*= and =*Messages*= unkillable. #+begin_src emacs-lisp (use-package unkillable-scratch - :defer 3 + :defer 0.6 :config (unkillable-scratch 1) :custom @@ -2081,7 +2068,7 @@ Make =*scratch*= and =*Messages*= unkillable. #+begin_src emacs-lisp (use-package boxquote - :defer 3 + :defer 0.6 :bind (:prefix-map a/boxquote-prefix-map :prefix "C-c q" @@ -2121,7 +2108,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. #+begin_src emacs-lisp (use-package typo - :defer 2 + :defer 0.5 :config (typo-global-mode 1) :hook (text-mode . typo-mode)) @@ -2131,7 +2118,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. #+begin_src emacs-lisp (use-package hl-todo - :defer 4 + :defer 0.5 :config (global-hl-todo-mode)) #+end_src @@ -2140,7 +2127,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. #+begin_src emacs-lisp (use-package shrink-path - :defer 2 + :defer 0.5 :after eshell :config (defun +eshell/prompt () @@ -2180,7 +2167,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. #+begin_src emacs-lisp (use-package multi-term - :defer 3 + :defer 0.6 :bind (("C-c a s m" . multi-term-dedicated-toggle) :map term-mode-map ("C-c C-j" . term-char-mode) @@ -2252,7 +2239,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. #+begin_src emacs-lisp (use-package yasnippet - :defer 3 + :defer 0.6 :config (defconst yas-verbosity-cur yas-verbosity) (setq yas-verbosity 2) @@ -2309,8 +2296,79 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. (nnimap-user "abandali@csclub.uw"))) gnus-message-archive-group "nnimap+amin:Sent" gnus-parameters - '(("gnu.*" - (gcc-self . t))) + '(("gnu\\.deepspec" + (to-address . "deepspec@lists.cs.princeton.edu") + (to-list . "deepspec@lists.cs.princeton.edu")) + ("gnu\\.emacs-devel" + (to-address . "emacs-devel@gnu.org") + (to-list . "emacs-devel@gnu.org")) + ("gnu\\.emacs-orgmode" + (to-address . "emacs-orgmode@gnu.org") + (to-list . "emacs-orgmode@gnu.org")) + ("gnu\\.emacsconf-discuss" + (to-address . "emacsconf-discuss@gnu.org") + (to-list . "emacsconf-discuss@gnu.org")) + ("gnu\\.fencepost-users" + (to-address . "fencepost-users@gnu.org") + (to-list . "fencepost-users@gnu.org")) + ("gnu\\.gnunet-developers" + (to-address . "gnunet-developers@gnu.org") + (to-list . "gnunet-developers@gnu.org")) + ("gnu\\.guile-devel" + (to-address . "guile-devel@gnu.org") + (to-list . "guile-devel@gnu.org")) + ("gnu\\.guix-devel" + (to-address . "guix-devel@gnu.org") + (to-list . "guix-devel@gnu.org")) + ("gnu\\.haskell-art" + (to-address . "haskell-art@we.lurk.org") + (to-list . "haskell-art@we.lurk.org")) + ("gnu\\.haskell-cafe" + (to-address . "haskell-cafe@haskell.org") + (to-list . "haskell-cafe@haskell.org")) + ("gnu\\.help-gnu-emacs" + (to-address . "help-gnu-emacs@gnu.org") + (to-list . "help-gnu-emacs@gnu.org")) + ("gnu\\.info-gnu-emacs" + (to-address . "info-gnu-emacs@gnu.org") + (to-list . "info-gnu-emacs@gnu.org")) + ("gnu\\.info-guix" + (to-address . "info-guix@gnu.org") + (to-list . "info-guix@gnu.org")) + ("gnu\\.notmuch" + (to-address . "notmuch@notmuchmail.org") + (to-list . "notmuch@notmuchmail.org")) + ("gnu\\.parabola-dev" + (to-address . "dev@lists.parabola.nu") + (to-list . "dev@lists.parabola.nu")) + ("gnu\\.webmasters" + (to-address . "webmasters@gnu.org") + (to-list . "webmasters@gnu.org")) + ("gnu\\.www-commits" + (to-address . "www-commits@gnu.org") + (to-list . "www-commits@gnu.org")) + ("gnu\\.www-discuss" + (to-address . "www-discuss@gnu.org") + (to-list . "www-discuss@gnu.org")) + ("gnu\\.~bandali\\.public-inbox" + (to-address . "~bandali/public-inbox@lists.sr.ht") + (to-list . "~bandali/public-inbox@lists.sr.ht")) + ("gnu\\.~sircmpwn\\.srht-admins" + (to-address . "~sircmpwn/sr.ht-admins@lists.sr.ht") + (to-list . "~sircmpwn/sr.ht-admins@lists.sr.ht")) + ("gnu\\.~sircmpwn\\.srht-announce" + (to-address . "~sircmpwn/sr.ht-announce@lists.sr.ht") + (to-list . "~sircmpwn/sr.ht-announce@lists.sr.ht")) + ("gnu\\.~sircmpwn\\.srht-dev" + (to-address . "~sircmpwn/sr.ht-dev@lists.sr.ht") + (to-list . "~sircmpwn/sr.ht-dev@lists.sr.ht")) + ("gnu\\.~sircmpwn\\.srht-discuss" + (to-address . "~sircmpwn/sr.ht-discuss@lists.sr.ht") + (to-list . "~sircmpwn/sr.ht-discuss@lists.sr.ht")) + ("gnu.*" + (gcc-self . t)) + ("gnu\\." + (subscribed . t))) gnus-large-newsgroup 50 gnus-home-directory (no-littering-expand-var-file-name "gnus/") gnus-directory (concat gnus-home-directory "news/") @@ -2350,8 +2408,6 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. (concat local lapsed)))) (bind-keys :map gnus-article-mode-map - ("r" . gnus-article-reply-with-original) - ("R" . gnus-article-wide-reply-with-original) ("M-L" . org-store-link))) (use-feature gnus-sum @@ -2364,8 +2420,6 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. :config (bind-keys :map gnus-summary-mode-map - ("r" . gnus-summary-reply-with-original) - ("R" . gnus-summary-wide-reply-with-original) ("M-L" . org-store-link)) :hook (gnus-summary-mode . a/no-mouse-autoselect-window)) @@ -2374,14 +2428,14 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. (setq gnus-posting-styles '((".*" (address "amin@bndl.org") - (body "\nBest,\namin\n") + (body "\nBest,\n") (eval (setq a/message-cite-say-hi t))) ("gnu.*" (address "bandali@gnu.org") (eval (set (make-local-variable 'message-user-fqdn) "fencepost.gnu.org"))) ((header "subject" "ThankCRM") (to "webmasters-comment@gnu.org") - (body "\nAdded to 2019supporters.html.\n\nMoving to campaigns.\n\n-amin\n") + (body "Added to 2019supporters.html.\n\nMoving to campaigns.\n\n-amin\n") (eval (setq a/message-cite-say-hi nil))) ("nnimap\\+uwaterloo:.*" (address "abandali@uwaterloo.ca") @@ -2424,6 +2478,16 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. #+begin_src emacs-lisp (use-feature message :config + ;; redefine for a simplified In-Reply-To header + ;; (see https://todo.sr.ht/~sircmpwn/lists.sr.ht/67) + (defun message-make-in-reply-to () + "Return the In-Reply-To header for this message." + (when message-reply-headers + (let ((from (mail-header-from message-reply-headers)) + (msg-id (mail-header-id message-reply-headers))) + (when from + msg-id)))) + (defconst a/message-cite-style-format "On %Y-%m-%d %l:%M %p, %N wrote:") (defconst message-cite-style-bandali '((message-cite-function 'message-cite-original) @@ -2441,6 +2505,8 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. message-kill-buffer-on-exit t message-send-mail-function 'message-send-mail-with-sendmail message-sendmail-envelope-from 'header + message-subscribed-address-functions + '(gnus-find-subscribed-addresses) message-dont-reply-to-names "\\(\\(amin@bndl\\.org\\)\\|\\(.*@\\(aminb\\|amin\\.bndl\\)\\.org\\)\\|\\(\\(bandali\\|aminb?\\|mab\\)@gnu\\.org\\)\\|\\(a\\(min\\.\\)?bandali@uwaterloo\\.ca\\)\\|\\(abandali@csclub\\.uwaterloo\\.ca\\)\\)") (require 'company-ebdb) @@ -2589,19 +2655,6 @@ Now with ERC! ((moznet "amin/moznet" ,pwd))))))) #+end_src -* Blogging -:PROPERTIES: -:CUSTOM_ID: blogging -:END: - -** [[https://ox-hugo.scripter.co][ox-hugo]] - -#+begin_src emacs-lisp -(use-package ox-hugo - :after ox - :demand) -#+end_src - * Post initialization :PROPERTIES: :CUSTOM_ID: post-initialization