Assimilate emmet-mode 1.0.8-119-g1acb821
[~bandali/configs] / init.el
diff --git a/init.el b/init.el
index 56e2e48..01ee10a 100644 (file)
--- a/init.el
+++ b/init.el
@@ -1,6 +1,6 @@
 ;;; 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
@@ -239,6 +239,17 @@ For disabling the behaviour for certain buffers and/or modes."
   (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)))
+
 \f
 ;;; Defaults
 
@@ -490,6 +501,7 @@ For disabling the behaviour for certain buffers and/or modes."
 ;;; General bindings
 
 (bind-keys
+ ("C-a"     . b/move-indentation-or-beginning-of-line)
  ("C-c a i" . ielm)
 
  ("C-c e b" . eval-buffer)
@@ -640,27 +652,37 @@ For disabling the behaviour for certain buffers and/or modes."
   :bind (:map doc-view-mode-map
               ("M-RET" . image-previous-line)))
 
+;; Email (with Gnus, message, and EBDB)
 (require 'bandali-gnus)
-
 (use-package sendmail
   :config
   (setq sendmail-program (executable-find "msmtp")
         ;; message-sendmail-extra-arguments '("-v" "-d")
         mail-specify-envelope-from t
         mail-envelope-from 'header))
-
 (require 'bandali-message)
+(require 'bandali-ebdb)
+
+;; 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
-(comment
+
 ;; highlight uncommitted changes in the left fringe
 (use-package diff-hl
   :defer 0.6
   :config
   (setq diff-hl-draw-borders nil)
   (global-diff-hl-mode)
-  :hook (magit-post-refresh . diff-hl-magit-post-refresh))
+  :hook
+  ((magit-pre-refresh . diff-hl-magit-pre-refresh)
+   (magit-post-refresh . diff-hl-magit-post-refresh)))
 
 ;; display Lisp objects at point in the echo area
 (use-package eldoc
@@ -711,8 +733,8 @@ For disabling the behaviour for certain buffers and/or modes."
 (use-package conf-mode
   :mode "\\.*rc$")
 
-(use-package sh-mode
-  :mode "\\.bashrc$")
+(use-package sh-script
+  :mode ("\\.bashrc$" . sh-mode))
 
 (use-package company
   :disabled
@@ -733,6 +755,7 @@ For disabling the behaviour for certain buffers and/or modes."
   )
 
 (use-package flycheck
+  :disabled
   :defer 0.6
   :hook (prog-mode . flycheck-mode)
   :bind
@@ -747,10 +770,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"))
 
-(use-package flyspell)
+;; (use-package flyspell)
 
 ;; http://endlessparentheses.com/ispell-and-apostrophes.html
 (use-package ispell
+  :disabled
   :defer 0.6
   :config
   ;; ’ can be part of a word
@@ -791,31 +815,31 @@ For disabling the behaviour for certain buffers and/or modes."
 (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 elisp-mode)
+
+(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
+  :disabled
   :defer 0.4
+  :init (eval-when-compile (defvar lean-mode-map))
   :bind (:map lean-mode-map
               ("S-SPC" . company-complete))
   :config
@@ -827,7 +851,7 @@ For disabling the behaviour for certain buffers and/or modes."
         lean-input-user-translations '(("/" "/")))
   (lean-input-setup))
 
-(use-package mhtml-mode)
+;; (use-package mhtml-mode)
 
 (use-package sgml-mode
   :config
@@ -846,23 +870,27 @@ For disabling the behaviour for certain buffers and/or modes."
   (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
+  :disabled
   :config
   (setq geiser-guile-load-path "~/src/git/guix"))
 
-(use-package guix)
+(use-package guix
+  :disabled)
 
-(comment
-  (use-package auctex
-    :custom
-    (font-latex-fontify-sectioning 'color)))
+(use-package auctex
+  :disabled
+  :custom
+  (font-latex-fontify-sectioning 'color))
 
 (use-package go-mode
   :disabled)
 
 (use-package po-mode
+  :disabled
   :hook
   (po-mode . (lambda () (run-with-timer 0.1 nil 'View-exit))))
 
@@ -881,6 +909,7 @@ For disabling the behaviour for certain buffers and/or modes."
 \f
 ;;; Theme
 
+(comment
 (add-to-list 'custom-theme-load-path
              (expand-file-name
               (convert-standard-filename "lisp") user-emacs-directory))
@@ -1258,12 +1287,7 @@ For disabling the behaviour for certain buffers and/or modes."
 
 (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)))
@@ -1354,12 +1378,6 @@ For disabling the behaviour for certain buffers and/or modes."
   :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
@@ -1367,160 +1385,6 @@ For disabling the behaviour for certain buffers and/or modes."
                            (getenv "XDG_DOWNLOAD_DIR"))))
 
 \f
-;;; Email
-
-(use-package ebdb
-  :demand
-  :after gnus
-  :bind (:map gnus-group-mode-map ("e" . ebdb))
-  :config
-  (setq ebdb-sources (b/var "ebdb"))
-  (with-eval-after-load 'swiper
-    (add-to-list 'swiper-font-lock-exclude 'ebdb-mode t)))
-
-(use-package ebdb-com
-  :after ebdb)
-
-(use-package ebdb-complete
-  :after ebdb
-  :config
-  ;; (setq ebdb-complete-mail 'capf)
-  (ebdb-complete-enable))
-
-(use-package ebdb-message
-  :demand
-  :after ebdb)
-
-;; (use-package company-ebdb
-;;   :config
-;;   (defun company-ebdb--post-complete (_) nil))
-
-(use-package ebdb-gnus
-  :after ebdb
-  :custom
-  (ebdb-gnus-window-size 0.3))
-
-(use-package ebdb-mua
-  :demand
-  :after ebdb
-  :custom (ebdb-mua-pop-up t))
-
-;; (use-package ebdb-message
-;;   :after ebdb)
-
-;; (use-package ebdb-vcard
-;;   :after ebdb)
-
-(use-package message-x)
-
-(comment
-  (use-package message-x
-    :custom
-    (message-x-completion-alist
-     (quote
-      (("\\([rR]esent-\\|[rR]eply-\\)?[tT]o:\\|[bB]?[cC][cC]:" . gnus-harvest-find-address)
-       ((if
-            (boundp
-             (quote message-newgroups-header-regexp))
-            message-newgroups-header-regexp message-newsgroups-header-regexp)
-        . message-expand-group))))))
-
-(comment
-  (use-package gnus-harvest
-    :commands gnus-harvest-install
-    :demand t
-    :config
-    (if (featurep 'message-x)
-        (gnus-harvest-install 'message-x)
-      (gnus-harvest-install))))
-
-(use-package gnus-article-treat-patch
-  :disabled
-  :demand
-  :load-path "lisp/"
-  :config
-  ;; note: be sure to customize faces with `:foreground "white"' when
-  ;; using a theme with a white/light background :)
-  (setq ft/gnus-article-patch-conditions
-        '("^@@ -[0-9]+,[0-9]+ \\+[0-9]+,[0-9]+ @@")))
-
-\f
-;;; IRC (with ERC and ZNC)
-
-(use-package erc
-  :bind (("C-c b b" . erc-switch-to-buffer)
-         :map erc-mode-map
-         ("M-a" . erc-track-switch-buffer))
-  :custom
-  (erc-join-buffer 'bury)
-  (erc-lurker-hide-list '("JOIN" "PART" "QUIT"))
-  (erc-nick "bandali")
-  (erc-prompt "erc>")
-  (erc-rename-buffers t)
-  (erc-server-reconnect-attempts 5)
-  (erc-server-reconnect-timeout 3)
-  :config
-  (defun erc-cmd-OPME ()
-    "Request chanserv to op me."
-    (erc-message "PRIVMSG"
-                 (format "chanserv op %s %s"
-                         (erc-default-target)
-                         (erc-current-nick)) nil))
-  (defun erc-cmd-DEOPME ()
-    "Deop myself from current channel."
-    (erc-cmd-DEOP (format "%s" (erc-current-nick))))
-  (add-to-list 'erc-modules 'keep-place)
-  (add-to-list 'erc-modules 'notifications)
-  (add-to-list 'erc-modules 'smiley)
-  (add-to-list 'erc-modules 'spelling)
-  (add-to-list 'erc-modules 'scrolltoplace)
-  (erc-update-modules))
-
-(use-package erc-fill
-  :after erc
-  :custom
-  (erc-fill-column 77)
-  (erc-fill-function 'erc-fill-static)
-  (erc-fill-static-center 18))
-
-(use-package erc-pcomplete
-  :after erc
-  :custom
-  (erc-pcomplete-nick-postfix ", "))
-
-(use-package erc-track
-  :after erc
-  :bind (("C-c a e t d" . erc-track-disable)
-         ("C-c a e t e" . erc-track-enable))
-  :custom
-  (erc-track-enable-keybindings nil)
-  (erc-track-exclude-types '("JOIN" "MODE" "NICK" "PART" "QUIT"
-                             "324" "329" "332" "333" "353" "477"))
-  (erc-track-position-in-mode-line t)
-  (erc-track-priority-faces-only 'all)
-  (erc-track-shorten-function nil))
-
-(use-package erc-hl-nicks
-  :after erc)
-
-(use-package erc-scrolltoplace
-  :after erc)
-
-(use-package znc
-  :bind (("C-c a e e" . znc-erc)
-         ("C-c a e a" . znc-all))
-  :config
-  (let ((pwd (let ((auth (auth-source-search :host "znca")))
-               (cond
-                ((null auth) (error "Couldn't find znca's authinfo"))
-                (t (funcall (plist-get (car auth) :secret)))))))
-    (setq znc-servers
-          `(("znc.shemshak.org" 1337 t
-             ((freenode "amin/freenode" ,pwd)))
-            ("znc.shemshak.org" 1337 t
-             ((oftc "amin/oftc" ,pwd)))))))
-
-\f
 ;;; Post initialization
 
 )