[emacs] update 9 drones
[~bandali/configs] / init.org
index 84d1ae2..e4c7a1e 100644 (file)
--- a/init.org
+++ b/init.org
@@ -646,7 +646,10 @@ Enable =winner-mode=.
  ("C-c b s" . save-buffer)
  ("C-c S"   . save-buffer)
  ("C-c o"   . other-window)
- ("C-c q q" . save-buffers-kill-terminal))
+ ("C-c q q" . save-buffers-kill-terminal)
+ ("C-c F m" . make-frame-command)
+ ("C-c F d" . delete-frame)
+ ("C-c F D" . delete-other-frames))
 #+end_src
 
 ** Packages
@@ -690,7 +693,9 @@ In short, my favourite way of life.
         org-src-preserve-indentation nil
         org-edit-src-content-indentation 0
         org-log-done 'time)
-  :hook (org-mode . org-indent-mode)
+  :hook ((org-mode . org-indent-mode)
+         (org-mode . auto-fill-mode)
+         (org-mode . flyspell-mode))
   :custom
   (org-latex-packages-alist '(("" "listings") ("" "color"))))
 
@@ -1060,7 +1065,8 @@ TODO: break this giant source block down into individual org sections.
   :defer 5
   :bind
   (:map company-active-map
-        ([tab] . company-complete-common-or-cycle))
+        ([tab]    . company-complete-common-or-cycle)
+        ([escape] . company-abort))
   :custom
   (company-idle-delay 0.3)
   (company-minimum-prefix-length 1)
@@ -1082,6 +1088,31 @@ TODO: break this giant source block down into individual org sections.
 
   ;; Only flycheck when I actually save the buffer
   (setq flycheck-check-syntax-automatically '(mode-enabled save)))
+
+;; http://endlessparentheses.com/ispell-and-apostrophes.html
+(use-package ispell
+  :config
+  ;; ’ can be part of a word
+  (setq ispell-local-dictionary-alist
+        `((nil "[[:alpha:]]" "[^[:alpha:]]"
+               "['\x2019]" nil ("-B") nil utf-8)))
+  ;; don't send ’ to the subprocess
+  (defun endless/replace-apostrophe (args)
+    (cons (replace-regexp-in-string
+           "’" "'" (car args))
+          (cdr args)))
+  (advice-add #'ispell-send-string :filter-args
+              #'endless/replace-apostrophe)
+
+  ;; convert ' back to ’ from the subprocess
+  (defun endless/replace-quote (args)
+    (if (not (derived-mode-p 'org-mode))
+        args
+      (cons (replace-regexp-in-string
+             "'" "’" (car args))
+            (cdr args))))
+  (advice-add #'ispell-parse-output :filter-args
+              #'endless/replace-quote))
 #+end_src
 * Programming modes
 
@@ -1104,9 +1135,13 @@ TODO: break this giant source block down into individual org sections.
 #+begin_src emacs-lisp
 (eval-when-compile (defvar lean-mode-map))
 (use-package lean-mode
+  :defer 2
   :bind (:map lean-mode-map
-              ("S-SPC" . company-complete)))
-#+end_src
+              ("S-SPC" . company-complete))
+  :config
+  (require 'lean-input)
+  (setq default-input-method "Lean"))
+  #+end_src
 
 ** Haskell
 
@@ -1495,7 +1530,8 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
 (use-package highlight-indent-guides
   :demand t
   :hook ((prog-mode . highlight-indent-guides-mode)
-         (org-mode  . highlight-indent-guides-mode))
+         ;; (org-mode  . highlight-indent-guides-mode)
+         )
   :config
   (setq highlight-indent-guides-character ?\|)
   (setq highlight-indent-guides-auto-enabled nil)
@@ -1516,7 +1552,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
         ("C-s" . isearch-forward)
         ("C-r" . isearch-backward)
         ("j"   . pdf-view-next-line-or-next-page)
-        ("j"   . pdf-view-previous-line-or-previous-page)))
+        ("k"   . pdf-view-previous-line-or-previous-page)))
 #+end_src
 
 ** anzu
@@ -1525,6 +1561,15 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
 (use-package anzu)
 #+end_src
 
+** typo.el
+
+#+begin_src emacs-lisp
+(use-package typo
+  :config
+  (typo-global-mode 1)
+  :hook (text-mode . typo-mode))
+#+end_src
+
 * Email
 
 #+begin_src emacs-lisp
@@ -1554,6 +1599,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
         message-sendmail-envelope-from 'header
         ;; message-directory "drafts"
         message-user-fqdn "aminb.org")
+  ;; (add-hook 'message-mode-hook 'electric-quote-local-mode)
   (add-hook 'message-mode-hook
             (lambda () (setq fill-column 65
                         message-fill-column 65)))