emacs: experiment with some window-management-related key bindings
[~bandali/configs] / .emacs.d / init.el
index 119d033..a90ab7c 100644 (file)
@@ -1,6 +1,6 @@
 ;;; init.el --- Amin Bandali's Emacs config -*- lexical-binding: t -*-
 
-;; Copyright (C) 2018-2019  Amin Bandali <bandali@gnu.org>
+;; Copyright (C) 2018-2019  Amin Bandali <mab@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
@@ -482,7 +482,6 @@ For disabling the behaviour for certain buffers and/or modes."
  ("s-p"     . beginning-of-buffer)
  ("s-n"     . end-of-buffer)
 
- ("M-o"     . other-window)
  ("M-O"     . facemenu-keymap)
 
  :map emacs-lisp-mode-map
@@ -843,7 +842,7 @@ For disabling the behaviour for certain buffers and/or modes."
    ("M-p"      . outline-previous-visible-heading)
    ("M-n"      . outline-next-visible-heading)
    :prefix-map a/outline-prefix-map
-   :prefix "s-o"
+   :prefix "s-O"
    ("TAB" . outline-toggle-children)
    ("a"   . outline-hide-body)
    ("H"   . outline-hide-body)
@@ -1017,7 +1016,8 @@ For disabling the behaviour for certain buffers and/or modes."
   ;; ’ can be part of a word
   (setq ispell-local-dictionary-alist
         `((nil "[[:alpha:]]" "[^[:alpha:]]"
-               "['\x2019]" nil ("-B") nil utf-8)))
+               "['\x2019]" nil ("-B") nil utf-8))
+        ispell-program-name (executable-find "hunspell"))
   ;; don't send ’ to the subprocess
   (defun endless/replace-apostrophe (args)
     (cons (replace-regexp-in-string
@@ -1300,7 +1300,7 @@ For disabling the behaviour for certain buffers and/or modes."
     "C-c P 4" "projectile/other-window"
     "C-c q"   "boxquote"
     "s-g"     "magit"
-    "s-o"     "outline"
+    "s-O"     "outline"
     "s-t"     "themes")
 
   ;; prefixes for major modes
@@ -1575,7 +1575,8 @@ For disabling the behaviour for certain buffers and/or modes."
    :token nday-students-token
    :subscribed-channels '(general)
    :full-and-display-names t)
-  (add-to-list 'swiper-font-lock-exclude 'slack-message-buffer-mode t)
+  (with-eval-after-load 'swiper
+    (add-to-list 'swiper-font-lock-exclude 'slack-message-buffer-mode t))
   (setq lui-time-stamp-format "[%Y-%m-%d %H:%M:%S]"
         lui-time-stamp-only-when-changed-p t
         lui-time-stamp-position 'right)
@@ -1609,6 +1610,27 @@ For disabling the behaviour for certain buffers and/or modes."
 (use-package emojify
   :hook (erc-mode . emojify-mode))
 
+(use-feature window
+  :bind
+  (("s-o"   . other-window)
+   ("M-o"   . other-window)
+   ("s-/ ." . split-window-right)
+   ("s-/ ," . split-window-below)
+   ("s-/ 0" . delete-window)
+   ("s-q"   . delete-window)))
+
+(use-feature windmove
+  :defer 0.6
+  :bind
+  (("s-h" . windmove-left)
+   ("s-j" . windmove-down)
+   ("s-k" . windmove-up)
+   ("s-l" . windmove-right)
+   ("s-H" . windmove-swap-states-left)
+   ("s-J" . windmove-swap-states-down)
+   ("s-K" . windmove-swap-states-up)
+   ("s-L" . windmove-swap-states-right)))
+
 \f
 ;;; Email (with Gnus)
 
@@ -1875,23 +1897,22 @@ For disabling the behaviour for certain buffers and/or modes."
 
 (use-feature gnus-msg
   :config
-  (defvar a/gnu-signature "Amin Bandali | GNU Webmaster
-https://bandali.eu.org | https://gnu.org
-GPG Key: BE62 7373 8E61 6D6D 1B3A  08E8 A21A 0202 4881 6103")
   (defvar a/uw-signature "Amin Bandali, MMath Student
 Cheriton School of Computer Science
 University of Waterloo
-https://bandali.eu.org")
-  (defvar a/csc-signature "Amin Bandali | Termcom, CSC
-https://csclub.uwaterloo.ca/~abandali/")
+https://shemshak.org/~amin")
+  (defvar a/csc-signature "Amin Bandali
+Termcom, Computer Science Club
+University of Waterloo
+https://shemshak.org/~amin")
   (setq gnus-posting-styles
         '((".*"
            (address "amin@shemshak.org")
            (body "\nBest,\n")
            (eval (setq a/message-cite-say-hi t)))
           ("nnimap\\+gnu:.*"
-           (address "bandali@gnu.org")
-           (signature a/gnu-signature)
+           (address "mab@gnu.org")
+           (organization "GNU Project")
            (eval (set (make-local-variable 'message-user-fqdn) "fencepost.gnu.org")))
           ((header "subject" "ThankCRM")
            (to "webmasters-comment@gnu.org")
@@ -1899,11 +1920,13 @@ https://csclub.uwaterloo.ca/~abandali/")
            (eval (setq a/message-cite-say-hi nil)))
           ("nnimap\\+uw:.*"
            (address "abandali@uwaterloo.ca")
+           (organization "University of Waterloo")
            (signature a/uw-signature))
           ("nnimap\\+uw:INBOX"
            (gcc "\"nnimap+uw:Sent Items\""))
           ("nnimap\\+csc:.*"
            (address "abandali@csclub.uwaterloo.ca")
+           (organization "Computer Science Club, University of Waterloo")
            (signature a/csc-signature)
            (gcc "nnimap+csc:Sent")))))
 
@@ -1937,7 +1960,7 @@ https://csclub.uwaterloo.ca/~abandali/")
 
 (use-feature sendmail
   :config
-  (setq sendmail-program "/usr/bin/msmtp"
+  (setq sendmail-program (executable-find "msmtp")
         ;; message-sendmail-extra-arguments '("-v" "-d")
         mail-specify-envelope-from t
         mail-envelope-from 'header))
@@ -1974,7 +1997,7 @@ https://csclub.uwaterloo.ca/~abandali/")
         message-subscribed-address-functions
         '(gnus-find-subscribed-addresses)
         message-dont-reply-to-names
-        "\\(\\(amin@\\(shemshak\\|bndl\\)\\.org\\)\\|\\(.*@aminb\\.org\\)\\|\\(\\(bandali\\|aminb?\\|mab\\)@gnu\\.org\\)\\|\\(a\\(min\\.\\)?bandali@uwaterloo\\.ca\\)\\|\\(abandali@csclub\\.uwaterloo\\.ca\\)\\)")
+        "\\(\\(amin@\\(shemshak\\|bndl\\)\\.org\\)\\|\\(.*@aminb\\.org\\)\\|\\(\\(mab\\|bandali\\|aminb?\\)@gnu\\.org\\)\\|\\(a\\(min\\.\\)?bandali@uwaterloo\\.ca\\)\\|\\(abandali@csclub\\.uwaterloo\\.ca\\)\\)")
   (require 'company-ebdb)
   :hook (;; (message-setup . mml-secure-message-sign-pgpmime)
          (message-mode . flyspell-mode)