Add and use my new Refinery colour theme
[~bandali/configs] / init.el
diff --git a/init.el b/init.el
index 3826466..4dff474 100644 (file)
--- a/init.el
+++ b/init.el
@@ -1,6 +1,6 @@
 ;;; init.el --- bandali's emacs configuration -*- lexical-binding: t -*-
 
 ;;; init.el --- bandali's emacs configuration -*- lexical-binding: t -*-
 
-;; Copyright (C) 2018-2019  Amin Bandali <bandali@gnu.org>
+;; Copyright (C) 2018-2020  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
@@ -239,6 +239,40 @@ For disabling the behaviour for certain buffers and/or modes."
   (interactive)
   (kill-buffer (current-buffer)))
 
   (interactive)
   (kill-buffer (current-buffer)))
 
+(defun b/move-indentation-or-beginning-of-line (arg)
+  "Move to the indentation or to the beginning of line."
+  (interactive "^p")
+  ;; (if (bolp)
+  ;;     (back-to-indentation)
+  ;;   (move-beginning-of-line arg))
+  (if (= (point)
+         (progn (back-to-indentation)
+                (point)))
+      (move-beginning-of-line arg)))
+
+(defun b/join-line-top ()
+  "Like `join-line', but join next line to the current line."
+  (interactive)
+  (join-line 1))
+
+(defun b/duplicate-line-or-region (&optional n)
+  "Duplicate the current line, or region (if active).
+Make N (default: 1) copies of the current line or region."
+  (interactive "*p")
+  (let ((u-r-p (use-region-p))          ; if region is active
+        (n1 (or n 1)))
+    (save-excursion
+      (let ((text
+             (if u-r-p
+                 (buffer-substring (region-beginning) (region-end))
+               (prog1 (thing-at-point 'line)
+                 (end-of-line)
+                 (if (eobp)
+                     (newline)
+                   (forward-line 1))))))
+        (dotimes (_ (abs n1))
+          (insert text))))))
+
 \f
 ;;; Defaults
 
 \f
 ;;; Defaults
 
@@ -261,7 +295,7 @@ For disabling the behaviour for certain buffers and/or modes."
  ;; scroll-margin 1
  ;; scroll-conservatively 10000
  scroll-step 1
  ;; scroll-margin 1
  ;; scroll-conservatively 10000
  scroll-step 1
- scroll-conservatively 10
+ scroll-conservatively 101
  scroll-preserve-screen-position 1
  ;; focus follows mouse
  mouse-autoselect-window t)
  scroll-preserve-screen-position 1
  ;; focus follows mouse
  mouse-autoselect-window t)
@@ -490,7 +524,9 @@ For disabling the behaviour for certain buffers and/or modes."
 ;;; General bindings
 
 (bind-keys
 ;;; General bindings
 
 (bind-keys
+ ("C-a"     . b/move-indentation-or-beginning-of-line)
  ("C-c a i" . ielm)
  ("C-c a i" . ielm)
+ ("C-c d"   . b/duplicate-line-or-region)
 
  ("C-c e b" . eval-buffer)
  ("C-c e e" . eval-last-sexp)
 
  ("C-c e b" . eval-buffer)
  ("C-c e e" . eval-last-sexp)
@@ -511,6 +547,8 @@ For disabling the behaviour for certain buffers and/or modes."
  ("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-S-j"   . b/join-line-top)
+
  ("C-c x"   . execute-extended-command)
 
  ("C-x k"   . b/kill-current-buffer)
  ("C-c x"   . execute-extended-command)
 
  ("C-x k"   . b/kill-current-buffer)
@@ -549,6 +587,8 @@ For disabling the behaviour for certain buffers and/or modes."
 
 (require 'bandali-org)
 
 
 (require 'bandali-org)
 
+(require 'bandali-theme)
+
 ;; *the* right way to do git
 (use-package magit
   :bind (("C-x g"   . magit-status)
 ;; *the* right way to do git
 (use-package magit
   :bind (("C-x g"   . magit-status)
@@ -654,6 +694,11 @@ For disabling the behaviour for certain buffers and/or modes."
 ;; IRC (with ERC and ZNC)
 (require 'bandali-erc)
 
 ;; IRC (with ERC and ZNC)
 (require 'bandali-erc)
 
+(use-package scpaste
+  :config
+  (setq scpaste-http-destination "https://p.bndl.org"
+        scpaste-scp-destination "p:~"))
+
 \f
 ;;; Editing
 
 \f
 ;;; Editing
 
@@ -716,8 +761,8 @@ For disabling the behaviour for certain buffers and/or modes."
 (use-package conf-mode
   :mode "\\.*rc$")
 
 (use-package conf-mode
   :mode "\\.*rc$")
 
-(use-package sh-mode
-  :mode "\\.bashrc$")
+(use-package sh-script
+  :mode ("\\.bashrc$" . sh-mode))
 
 (use-package company
   :disabled
 
 (use-package company
   :disabled
@@ -737,8 +782,8 @@ For disabling the behaviour for certain buffers and/or modes."
   ;; (global-company-mode t)
   )
 
   ;; (global-company-mode t)
   )
 
-(comment
 (use-package flycheck
 (use-package flycheck
+  :disabled
   :defer 0.6
   :hook (prog-mode . flycheck-mode)
   :bind
   :defer 0.6
   :hook (prog-mode . flycheck-mode)
   :bind
@@ -753,10 +798,11 @@ For disabling the behaviour for certain buffers and/or modes."
   (setq flycheck-check-syntax-automatically '(mode-enabled save))
   :custom (flycheck-mode-line-prefix "flyc"))
 
   (setq flycheck-check-syntax-automatically '(mode-enabled save))
   :custom (flycheck-mode-line-prefix "flyc"))
 
-(use-package flyspell)
+;; (use-package flyspell)
 
 ;; http://endlessparentheses.com/ispell-and-apostrophes.html
 (use-package ispell
 
 ;; http://endlessparentheses.com/ispell-and-apostrophes.html
 (use-package ispell
+  :disabled
   :defer 0.6
   :config
   ;; ’ can be part of a word
   :defer 0.6
   :config
   ;; ’ can be part of a word
@@ -794,34 +840,29 @@ For disabling the behaviour for certain buffers and/or modes."
     (setq indent-tabs-mode nil))
   (add-hook 'lisp-interaction-mode-hook #'indent-spaces-mode))
 
     (setq indent-tabs-mode nil))
   (add-hook 'lisp-interaction-mode-hook #'indent-spaces-mode))
 
-(use-package reveal
-  :hook (emacs-lisp-mode . reveal-mode))
-
-(use-package elisp-mode)
-
-;; (use-package alloy-mode
-;;   :straight (:host github :repo "dwwmmn/alloy-mode")
-;;   :mode "\\.\\(als\\|dsh\\)\\'"
-;;   :config
-;;   (setq alloy-basic-offset 2)
-;;   ;; (defun b/alloy-simple-indent (start end)
-;;   ;;   (interactive "r")
-;;   ;;   ;; (if (region-active-p)
-;;   ;;   ;;     (indent-rigidly start end alloy-basic-offset)
-;;   ;;   ;;   (if (bolp)
-;;   ;;   ;;       (indent-rigidly (line-beginning-position)
-;;   ;;   ;;                       (line-end-position)
-;;   ;;   ;;                       alloy-basic-offset)))
-;;   ;;   (indent-to (+ (current-column) alloy-basic-offset)))
-;;   :bind (:map alloy-mode-map
-;;               ("RET" . electric-newline-and-maybe-indent)
-;;               ;; ("TAB" . b/alloy-simple-indent)
-;;               ("TAB" . indent-for-tab-command))
-;;   :hook (alloy-mode . (lambda () (setq-local indent-tabs-mode nil))))
-
-(eval-when-compile (defvar lean-mode-map))
+(use-package alloy-mode
+  :mode "\\.\\(als\\|dsh\\)\\'"
+  :config
+  (setq alloy-basic-offset 2)
+  ;; (defun b/alloy-simple-indent (start end)
+  ;;   (interactive "r")
+  ;;   ;; (if (region-active-p)
+  ;;   ;;     (indent-rigidly start end alloy-basic-offset)
+  ;;   ;;   (if (bolp)
+  ;;   ;;       (indent-rigidly (line-beginning-position)
+  ;;   ;;                       (line-end-position)
+  ;;   ;;                       alloy-basic-offset)))
+  ;;   (indent-to (+ (current-column) alloy-basic-offset)))
+  :bind (:map alloy-mode-map
+              ("RET" . electric-newline-and-maybe-indent)
+              ;; ("TAB" . b/alloy-simple-indent)
+              ("TAB" . indent-for-tab-command))
+  :hook (alloy-mode . (lambda () (setq-local indent-tabs-mode nil))))
+
 (use-package lean-mode
 (use-package lean-mode
+  :disabled
   :defer 0.4
   :defer 0.4
+  :init (eval-when-compile (defvar lean-mode-map))
   :bind (:map lean-mode-map
               ("S-SPC" . company-complete))
   :config
   :bind (:map lean-mode-map
               ("S-SPC" . company-complete))
   :config
@@ -833,8 +874,6 @@ For disabling the behaviour for certain buffers and/or modes."
         lean-input-user-translations '(("/" "/")))
   (lean-input-setup))
 
         lean-input-user-translations '(("/" "/")))
   (lean-input-setup))
 
-(use-package mhtml-mode)
-
 (use-package sgml-mode
   :config
   (setq sgml-basic-offset 0))
 (use-package sgml-mode
   :config
   (setq sgml-basic-offset 0))
@@ -852,26 +891,30 @@ For disabling the behaviour for certain buffers and/or modes."
   (setq emmet-move-cursor-between-quotes t)
   :hook (css-mode html-mode sgml-mode))
 
   (setq emmet-move-cursor-between-quotes t)
   :hook (css-mode html-mode sgml-mode))
 
-(use-package geiser)
+(use-package geiser
+  :disabled)
 
 (use-package geiser-guile
 
 (use-package geiser-guile
+  :disabled
   :config
   (setq geiser-guile-load-path "~/src/git/guix"))
 
   :config
   (setq geiser-guile-load-path "~/src/git/guix"))
 
-(use-package guix)
-
-(comment
-  (use-package auctex
-    :custom
-    (font-latex-fontify-sectioning 'color)))
+(use-package guix
+  :disabled)
 
 (use-package go-mode
   :disabled)
 
 (use-package po-mode
 
 (use-package go-mode
   :disabled)
 
 (use-package po-mode
+  :disabled
   :hook
   (po-mode . (lambda () (run-with-timer 0.1 nil 'View-exit))))
 
   :hook
   (po-mode . (lambda () (run-with-timer 0.1 nil 'View-exit))))
 
+(use-package auctex
+  :disabled
+  :custom
+  (font-latex-fontify-sectioning 'color))
+
 (use-package tex-mode
   :config
   (cl-delete-if
 (use-package tex-mode
   :config
   (cl-delete-if
@@ -885,94 +928,8 @@ For disabling the behaviour for certain buffers and/or modes."
 ;;   :mode "\\.grg\\'")
 
 \f
 ;;   :mode "\\.grg\\'")
 
 \f
-;;; Theme
-
-(add-to-list 'custom-theme-load-path
-             (expand-file-name
-              (convert-standard-filename "lisp") user-emacs-directory))
-(load-theme 'tangomod t)
-
-(use-package smart-mode-line
-  :commands (sml/apply-theme)
-  :demand
-  :config
-  ;; thanks, but no thnaks; don't make fixed-width fills.
-  (defun sml/fill-for-buffer-identification () "")
-  (setq sml/theme 'tangomod)
-  (sml/setup)
-  (smart-mode-line-enable))
-
-(use-package doom-modeline
-  :disabled
-  :demand
-  :hook (after-init . doom-modeline-init)
-  :custom
-  (doom-modeline-buffer-file-name-style 'relative-to-project))
-
-(use-package doom-themes)
-
-(use-package moody
-  :disabled
-  :demand
-  :config
-  (setq x-underline-at-descent-line t)
-  (let ((line (face-attribute 'mode-line :underline)))
-    (set-face-attribute 'mode-line          nil :overline   line)
-    (set-face-attribute 'mode-line-inactive nil :overline   line)
-    (set-face-attribute 'mode-line-inactive nil :underline  line)
-    (set-face-attribute 'mode-line          nil :box        nil)
-    (set-face-attribute 'mode-line-inactive nil :box        nil)
-    (set-face-attribute 'mode-line-inactive nil :background "#e1e1e1")) ; d3d7cf
-  (moody-replace-mode-line-buffer-identification)
-  (moody-replace-vc-mode))
-
-(use-package mini-modeline
-  :disabled
-  :demand
-  :config (mini-modeline-mode))
-
-(defvar b/org-mode-font-lock-keywords
-  '(("[ \t]*\\(#\\+\\(BEGIN\\|END\\|begin\\|end\\)_\\(\\S-+\\)\\)[ \t]*\\([^\n:]*\\)"
-      (1 '(:foreground "#5a5b5a" :background "#292b2b") t) ; directive
-      (3 '(:foreground "#81a2be" :background "#292b2b") t) ; kind
-      (4 '(:foreground "#c5c8c6") t)))                     ; title
-  "For use with the `doom-tomorrow-night' theme.")
-
-(defun b/lights-on ()
-  "Enable my favourite light theme."
-  (interactive)
-  (mapc #'disable-theme custom-enabled-themes)
-  (load-theme 'tangomod t)
-  (when (featurep 'smart-mode-line)
-    (sml/apply-theme 'tangomod))
-  (font-lock-remove-keywords
-   'org-mode b/org-mode-font-lock-keywords)
-  (when (featurep 'erc-hl-nicks)
-    (erc-hl-nicks-reset-face-table))
-  (when (featurep 'exwm-systemtray)
-    (exwm-systemtray--refresh)))
-
-(defun b/lights-off ()
-  "Go dark."
-  (interactive)
-  (mapc #'disable-theme custom-enabled-themes)
-  (load-theme 'doom-one t)
-  (when (featurep 'smart-mode-line)
-    (sml/apply-theme 'automatic))
-  (font-lock-add-keywords
-   'org-mode b/org-mode-font-lock-keywords t)
-  (when (featurep 'erc-hl-nicks)
-    (erc-hl-nicks-reset-face-table))
-  (when (featurep 'exwm-systemtray)
-    (exwm-systemtray--refresh)))
-
-(bind-keys
- ("C-c t d" . b/lights-off)
- ("C-c t l" . b/lights-on))
-
-\f
 ;;; Emacs enhancements & auxiliary packages
 ;;; Emacs enhancements & auxiliary packages
-
+(comment
 (use-package man
   :config (setq Man-width 80))
 
 (use-package man
   :config (setq Man-width 80))
 
@@ -1037,12 +994,6 @@ For disabling the behaviour for certain buffers and/or modes."
          ("C-c j"   . crux-top-join-line)
          ("C-S-j"   . crux-top-join-line)))
 
          ("C-c j"   . crux-top-join-line)
          ("C-S-j"   . crux-top-join-line)))
 
-(use-package mwim
-  :bind (("C-a"    . mwim-beginning-of-code-or-line)
-         ("C-e"    . mwim-end-of-code-or-line)
-         ("<home>" . mwim-beginning-of-line-or-code)
-         ("<end>"  . mwim-end-of-line-or-code)))
-
 (use-package projectile
   :disabled
   :defer 0.5
 (use-package projectile
   :disabled
   :defer 0.5
@@ -1264,12 +1215,7 @@ For disabling the behaviour for certain buffers and/or modes."
 
 (use-package window
   :bind
 
 (use-package window
   :bind
-  (("C-c w e"   . (lambda ()
-                    (interactive)
-                    (split-window-right)
-                    (other-window 1)
-                    (erc-switch-to-buffer)))
-   ("C-c w s l" . (lambda ()
+  (("C-c w s l" . (lambda ()
                     (interactive)
                     (split-window-right)
                     (other-window 1)))
                     (interactive)
                     (split-window-right)
                     (other-window 1)))
@@ -1341,10 +1287,6 @@ For disabling the behaviour for certain buffers and/or modes."
           (goto-char (cdr macro)))
         (reftex-this-word)))))
 
           (goto-char (cdr macro)))
         (reftex-this-word)))))
 
-(use-package minions
-  :demand
-  :config (minions-mode))
-
 (use-package dmenu
   :custom
   (dmenu-prompt-string "run: ")
 (use-package dmenu
   :custom
   (dmenu-prompt-string "run: ")
@@ -1360,12 +1302,6 @@ For disabling the behaviour for certain buffers and/or modes."
   :config
   (eosd-start))
 
   :config
   (eosd-start))
 
-(use-package scpaste
-  :disabled
-  :config
-  (setq scpaste-http-destination "https://p.bndl.org"
-        scpaste-scp-destination "nix:/var/www/p.bndl.org"))
-
 (use-package eww
   :bind ("C-c a e w" . eww)
   :custom
 (use-package eww
   :bind ("C-c a e w" . eww)
   :custom