[rc/systemd] keep boot messages on tty1
[~bandali/configs] / init.org
index 8b6f146..6877be2 100644 (file)
--- a/init.org
+++ b/init.org
@@ -33,6 +33,9 @@ few months, but decided to try =straight.el= which allows direct use
 of the various package archives.
 
 ** Installation
 of the various package archives.
 
 ** Installation
+:PROPERTIES:
+:CUSTOM_ID: installation
+:END:
 
 To use this config for your Emacs, first you need to clone this repo,
 then tangle =init.org= into =init.el=, and optionally byte-compile
 
 To use this config for your Emacs, first you need to clone this repo,
 then tangle =init.org= into =init.el=, and optionally byte-compile
@@ -46,12 +49,7 @@ cd ~/.emacs.d
 #+end_src
 
 Then, decide if you would like to use a byte-compiled init file, and
 #+end_src
 
 Then, decide if you would like to use a byte-compiled init file, and
-set the following variable accordingly:
-
-#+begin_src emacs-lisp
-(defvar a/byte-compiled-init t
-  "If non-nil, byte-(re)compile init.el on successful tangles.")
-#+end_src
+set the [[#byte-compiled-init][a/byte-compiled-init]] variable accordingly.
 
 Now, first tangle =init.org=, and only if you chose to have a
 byte-compiled init, build init as well:
 
 Now, first tangle =init.org=, and only if you chose to have a
 byte-compiled init, build init as well:
@@ -107,7 +105,7 @@ file.
 ** License
 
 #+begin_src emacs-lisp :comments none
 ** License
 
 #+begin_src emacs-lisp :comments none
-;; Copyright (C) 2018  Amin Bandali <bandali@gnu.org>
+;; Copyright (C) 2018-2019  Amin Bandali <bandali@gnu.org>
 
 ;; This program is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
 
 ;; This program is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
@@ -139,6 +137,21 @@ file.
 :CUSTOM_ID: initial-setup
 :END:
 
 :CUSTOM_ID: initial-setup
 :END:
 
+** Byte-compiled init preference
+:PROPERTIES:
+:CUSTOM_ID: byte-compiled-init
+:END:
+
+If you would like a byte-compiled init file, set the following
+variable to ~t~, otherwise set it to ~nil~.
+
+#+begin_src emacs-lisp
+(defvar a/byte-compiled-init t
+  "If non-nil, byte-(re)compile init.el on successful tangles.")
+#+end_src
+
+You can click on [[#installation][Installation]] to jump back up there if you like :)
+
 ** Emacs initialization
 
 I'd like to do a couple of measurements of Emacs' startup time. First,
 ** Emacs initialization
 
 I'd like to do a couple of measurements of Emacs' startup time. First,
@@ -324,8 +337,8 @@ database, low-level functions for querying the database, and a
 (use-package epkg
   :commands (epkg-list-packages epkg-describe-package)
   :bind
 (use-package epkg
   :commands (epkg-list-packages epkg-describe-package)
   :bind
-  (("C-c P e d" . epkg-describe-package)
-   ("C-c P e p" . epkg-list-packages))
+  (("C-c p e d" . epkg-describe-package)
+   ("C-c p e p" . epkg-list-packages))
   :config
   (setq epkg-repository "~/.emacs.d/straight/repos/epkgs/")
   (eval-when-compile (defvar ivy-initial-inputs-alist))
   :config
   (setq epkg-repository "~/.emacs.d/straight/repos/epkgs/")
   (eval-when-compile (defvar ivy-initial-inputs-alist))
@@ -484,6 +497,33 @@ buffers and/or modes.
   (setq mouse-autoselect-window nil))
 #+end_src
 
   (setq mouse-autoselect-window nil))
 #+end_src
 
+** Better scrolling (arguably)
+
+#+begin_src emacs-lisp
+(setq ;; scroll-margin 1
+      ;; scroll-conservatively 10000
+      scroll-step 1
+      scroll-conservatively 10
+      scroll-preserve-screen-position 1)
+
+(use-feature mwheel
+  :defer 1
+  :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
+  :config (pixel-scroll-mode 1))
+#+end_src
+
+** Ask for GPG passphrase in minibuffer
+
+#+begin_src emacs-lisp
+(setq epg-pinentry-mode 'loopback)
+#+end_src
+
 ** Libraries
 
 #+begin_src emacs-lisp
 ** Libraries
 
 #+begin_src emacs-lisp
@@ -739,6 +779,8 @@ for this.
 
 ** Bindings
 
 
 ** Bindings
 
+Some bindings for functions from built-in GNU Emacs packages:
+
 #+begin_src emacs-lisp
 (bind-keys
  ("C-c a i" . ielm)
 #+begin_src emacs-lisp
 (bind-keys
  ("C-c a i" . ielm)
@@ -746,23 +788,54 @@ for this.
  ("C-c e b" . eval-buffer)
  ("C-c e r" . eval-region)
 
  ("C-c e b" . eval-buffer)
  ("C-c e r" . eval-region)
 
+ ("C-c e i" . emacs-init-time)
+ ("C-c e u" . emacs-uptime)
+
  ("C-c F m" . make-frame-command)
  ("C-c F d" . delete-frame)
  ("C-c F D" . delete-other-frames)
 
  ("C-c o"   . other-window)
 
  ("C-c F m" . make-frame-command)
  ("C-c F d" . delete-frame)
  ("C-c F D" . delete-other-frames)
 
  ("C-c o"   . other-window)
 
- ("C-c Q"   . save-buffers-kill-terminal)
-
  ("C-S-h C" . describe-char)
  ("C-S-h F" . describe-face)
 
  ("C-S-h C" . describe-char)
  ("C-S-h F" . describe-face)
 
- ("C-x K"   . kill-this-buffer)
+ ("C-x k"   . kill-this-buffer)
+ ("C-x K"   . kill-buffer)
 
  ("s-p"     . beginning-of-buffer)
  ("s-n"     . end-of-buffer))
 #+end_src
 
 
  ("s-p"     . beginning-of-buffer)
  ("s-n"     . end-of-buffer))
 #+end_src
 
+While at it, let's bind a few for some =straight-*= functions too:
+
+#+begin_src emacs-lisp
+(bind-keys
+ :prefix-map a/straight-prefix-map
+ :prefix "C-c p s"
+ ("u" . straight-use-package)
+ ("f" . straight-freeze-versions)
+ ("t" . straight-thaw-versions)
+ ("P" . straight-prune-build)
+ ("r" . straight-get-recipe)
+ ;; M-x ^straight-.*-all$
+ ("a c" . straight-check-all)
+ ("a f" . straight-fetch-all)
+ ("a m" . straight-merge-all)
+ ("a n" . straight-normalize-all)
+ ("a F" . straight-pull-all)
+ ("a P" . straight-push-all)
+ ("a r" . straight-rebuild-all)
+ ;; M-x ^straight-.*-package$
+ ("p c" . straight-check-package)
+ ("p f" . straight-fetch-package)
+ ("p m" . straight-merge-package)
+ ("p n" . straight-normalize-package)
+ ("p F" . straight-pull-package)
+ ("p P" . straight-push-package)
+ ("p r" . straight-rebuild-package))
+#+end_src
+
 ** Packages
 
 The packages in this section are absolutely essential to my everyday
 ** Packages
 
 The packages in this section are absolutely essential to my everyday
@@ -1135,6 +1208,7 @@ There's no way I could top that, so I won't attempt to.
         (mode . python-mode)
         (mode . c-mode)
         (mode . c++-mode)
         (mode . python-mode)
         (mode . c-mode)
         (mode . c++-mode)
+        (mode . java-mode)
         (mode . emacs-lisp-mode)
         (mode . scheme-mode)
         (mode . haskell-mode)
         (mode . emacs-lisp-mode)
         (mode . scheme-mode)
         (mode . haskell-mode)
@@ -1675,9 +1749,9 @@ instead.
   :hook (web-mode css-mode html-mode sgml-mode))
 #+end_src
 
   :hook (web-mode css-mode html-mode sgml-mode))
 #+end_src
 
-** COMMENT Java
+** Java
 
 
-*** meghanada
+*** COMMENT meghanada
 
 #+begin_src emacs-lisp
 (use-package meghanada
 
 #+begin_src emacs-lisp
 (use-package meghanada
@@ -1688,7 +1762,7 @@ instead.
   :hook (java-mode . meghanada-mode))
 #+end_src
 
   :hook (java-mode . meghanada-mode))
 #+end_src
 
-*** lsp-java
+*** COMMENT lsp-java
 
 #+begin_comment
 dependencies:
 
 #+begin_comment
 dependencies:
@@ -1756,6 +1830,24 @@ treemacs
   :after (treemacs))
 #+end_src
 
   :after (treemacs))
 #+end_src
 
+*** eclim
+
+#+begin_src emacs-lisp
+(use-package eclim
+  :bind (:map eclim-mode-map ("S-SPC" . company-complete))
+  :hook ((java-mode . eclim-mode)
+         (eclim-mode . (lambda ()
+                         (make-local-variable 'company-idle-delay)
+                         (defvar company-idle-delay)
+                         ;; (setq company-idle-delay 0.7)
+                         (setq company-idle-delay nil))))
+  :custom
+  (eclim-auto-save nil)
+  ;; (eclimd-default-workspace "~/src/eclipse-workspace-exp")
+  (eclim-executable "~/.p2/pool/plugins/org.eclim_2.8.0/bin/eclim")
+  (eclim-eclipse-dirs '("~/usr/eclipse/dsl-2018-09/eclipse")))
+#+end_src
+
 ** geiser
 
 #+begin_src emacs-lisp
 ** geiser
 
 #+begin_src emacs-lisp
@@ -1809,19 +1901,21 @@ Emacs package that displays available keybindings in popup
     ;; prefixes for my personal bindings
     "C-c a"   "applications"
     "C-c a s" "shells"
     ;; prefixes for my personal bindings
     "C-c a"   "applications"
     "C-c a s" "shells"
-    "C-c P"   "package-management"
-    "C-c P e" "package-management/epkg"
-    "C-c P s" "package-management/straight.el"
+    "C-c p"   "package-management"
+    "C-c p e" "package-management/epkg"
+    "C-c p s" "straight.el"
+    "C-c psa" "all"
+    "C-c psp" "package"
     "C-c c"   "compile-and-comments"
     "C-c e"   "eval"
     "C-c f"   "files"
     "C-c F"   "frames"
     "C-S-h"   "help(ful)"
     "C-c m"   "multiple-cursors"
     "C-c c"   "compile-and-comments"
     "C-c e"   "eval"
     "C-c f"   "files"
     "C-c F"   "frames"
     "C-S-h"   "help(ful)"
     "C-c m"   "multiple-cursors"
-    "C-c p"   "projectile"
-    "C-c p s" "projectile/search"
-    "C-c p x" "projectile/execute"
-    "C-c p 4" "projectile/other-window"
+    "C-c P"   "projectile"
+    "C-c P s" "projectile/search"
+    "C-c P x" "projectile/execute"
+    "C-c P 4" "projectile/other-window"
     "C-c q"   "boxquote"
     "s-g"     "magit"
     "s-o"     "outline"
     "C-c q"   "boxquote"
     "s-g"     "magit"
     "s-o"     "outline"
@@ -1839,7 +1933,10 @@ Emacs package that displays available keybindings in popup
     "C-c C-e" "web/element"
     "C-c C-t" "web/tags")
 
     "C-c C-e" "web/element"
     "C-c C-t" "web/tags")
 
-  (which-key-mode))
+  (which-key-mode)
+  :custom
+  (which-key-add-column-padding 5)
+  (which-key-max-description-length 32))
 #+end_src
 
 ** theme
 #+end_src
 
 ** theme
@@ -1926,7 +2023,7 @@ Emacs package that displays available keybindings in popup
 
 #+begin_src emacs-lisp
 (use-package projectile
 
 #+begin_src emacs-lisp
 (use-package projectile
-  :bind-keymap ("C-c p" . projectile-command-map)
+  :bind-keymap ("C-c P" . projectile-command-map)
   :config
   (projectile-mode)
 
   :config
   (projectile-mode)
 
@@ -2050,9 +2147,10 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
               (propertize (+eshell--current-git-branch)
                           'face 'font-lock-function-name-face)
               "\n"
               (propertize (+eshell--current-git-branch)
                           'face 'font-lock-function-name-face)
               "\n"
-              (propertize "λ" 'face 'eshell-prompt-face)
+              ;; "λ"
+              ;; (propertize "λ" 'face 'eshell-prompt)
               ;; needed for the input text to not have prompt face
               ;; needed for the input text to not have prompt face
-              (propertize " " 'face 'default))))
+              (propertize "λ " 'face 'default))))
 
   (defun +eshell--current-git-branch ()
     (let ((branch (car (loop for match in (split-string (shell-command-to-string "git branch") "\n")
 
   (defun +eshell--current-git-branch ()
     (let ((branch (car (loop for match in (split-string (shell-command-to-string "git branch") "\n")
@@ -2137,6 +2235,29 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
                ("a" . mc/mark-all-like-this))))
 #+end_src
 
                ("a" . mc/mark-all-like-this))))
 #+end_src
 
+** forge
+
+#+begin_src emacs-lisp
+(use-package forge
+  :after magit
+  :demand)
+#+end_src
+
+** yasnippet
+
+#+begin_src emacs-lisp
+(use-package yasnippet
+  :defer 3
+  :config
+  (defconst yas-verbosity-cur yas-verbosity)
+  (setq yas-verbosity 2)
+  (add-to-list 'yas-snippet-dirs "~/src/git/guix/etc/snippets")
+  (yas-reload-all)
+  (setq yas-verbosity yas-verbosity-cur)
+  :hook
+  (text-mode . yas-minor-mode))
+#+end_src
+
 * Email
 :PROPERTIES:
 :CUSTOM_ID: email
 * Email
 :PROPERTIES:
 :CUSTOM_ID: email
@@ -2248,7 +2369,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
            (address "bandali@gnu.org"))
           ((header "subject" "ThankCRM")
            (to "webmasters-comment@gnu.org")
            (address "bandali@gnu.org"))
           ((header "subject" "ThankCRM")
            (to "webmasters-comment@gnu.org")
-           (body "\nAdded  to 2018supporters.html.\n\nMoving to campaigns.\n\n-amin\n")
+           (body "\nAdded  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")
            (eval (setq a/message-cite-say-hi nil)))
           ("nnimap\\+uwaterloo:.*"
            (address "abandali@uwaterloo.ca")
@@ -2264,7 +2385,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
 
 (use-feature gnus-group
   :config
 
 (use-feature gnus-group
   :config
-  (setq gnus-permanently-visible-groups "\\((INBOX\\|gnu$\\)"))
+  (setq gnus-permanently-visible-groups "\\(:INBOX$\\|:gnu$\\)"))
 
 (use-feature mm-decode
   :config
 
 (use-feature mm-decode
   :config
@@ -2333,6 +2454,10 @@ Convenient footnotes in =message-mode=.
 #+begin_src emacs-lisp
 (use-feature footnote
   :after message
 #+begin_src emacs-lisp
 (use-feature footnote
   :after message
+  ;; :config
+  ;; (setq footnote-start-tag ""
+  ;;       footnote-end-tag   ""
+  ;;       footnote-style     'unicode)
   :bind
   (:map message-mode-map
         :prefix-map a/footnote-prefix-map
   :bind
   (:map message-mode-map
         :prefix-map a/footnote-prefix-map
@@ -2343,11 +2468,7 @@ Convenient footnotes in =message-mode=.
         ("d" . footnote-delete-footnote)
         ("g" . footnote-goto-footnote)
         ("r" . footnote-renumber-footnotes)
         ("d" . footnote-delete-footnote)
         ("g" . footnote-goto-footnote)
         ("r" . footnote-renumber-footnotes)
-        ("s" . footnote-set-style))
-  :config
-  (setq footnote-start-tag ""
-        footnote-end-tag   ""
-        footnote-style     'unicode))
+        ("s" . footnote-set-style)))
 #+end_src
 
 ** ebdb
 #+end_src
 
 ** ebdb
@@ -2438,10 +2559,8 @@ Convenient footnotes in =message-mode=.
 
 #+begin_src emacs-lisp
 (use-package ox-hugo
 
 #+begin_src emacs-lisp
 (use-package ox-hugo
-  :after ox)
-
-(use-feature ox-hugo-auto-export
-  :after ox-hugo)
+  :after ox
+  :demand)
 #+end_src
 
 * Post initialization
 #+end_src
 
 * Post initialization