]> git.donarmstrong.com Git - lib.git/blobdiff - emacs_el/configuration/don-configuration.org
use ispell instead of aspell
[lib.git] / emacs_el / configuration / don-configuration.org
index 0fd08e701a45ddf99bd8473ed764779314d6907e..d58fc9f76e977f8c58090e573d2f795fe2c55356 100644 (file)
 * Package management
 ** package repositories and package manager
 #+BEGIN_SRC emacs-lisp
+  (require 'package)
   (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
                            ("melpa" . "https://melpa.org/packages/")
                            ("org" . "http://orgmode.org/elpa/") ))
-  (package-initialize)
 #+END_SRC
 ** [[https://github.com/jwiegley/use-package/][use-package]]
 #+BEGIN_SRC emacs-lisp
   (require 'use-package)
+  (package-initialize)
 #+END_SRC
 ** Paradox
 #+BEGIN_SRC emacs-lisp
+  (package-initialize)
   (use-package paradox
     :ensure paradox
   )
 ** Eyebrowse
 
 #+BEGIN_SRC emacs-lisp
-  (use-package eyebrowse
-    :ensure t
-    :diminish eyebrowse-mode
-    :init (setq eyebrowse-keymap-prefix (kbd "C-c C-\\"))
-    :config (progn
-              (setq eyebrowse-wrap-around t)
-              (eyebrowse-mode t)
-
-              (defun my/eyebrowse-new-window-config ()
-                (interactive)
-                (let ((done nil))
-                  (dotimes (i 10)
-                    ;; start at 1 run till 0
-                    (let ((j (mod (+ i 1) 10)))
-                      (when (and (not done)
-                                 (not (eyebrowse--window-config-present-p j)))
-                        (eyebrowse-switch-to-window-config j)
-                        (call-interactively 'eyebrowse-rename-window-config2 j)
-                        (setq done t)
-                        ))
-                    )))
-
-              ;; I don't use latex-preview-pane
-              ;; (require 'latex-preview-pane)
-              ;; (defun my/close-latex-preview-pane-before-eyebrowse-switch ()
-              ;;   ;; latex-preview-pane uses window-parameters which are
-              ;;   ;; not preserved by eyebrowse, so we close the preview
-              ;;   ;; pane before switching, it will be regenerated when we
-              ;;   ;; edit the TeX file.
-              ;;   (when (lpp/window-containing-preview)
-              ;;     (delete-window (lpp/window-containing-preview))))
-
-              ;; (add-to-list 'eyebrowse-pre-window-switch-hook
-              ;;              #'my/close-latex-preview-pane-before-eyebrowse-switch)
-
-              (my/set-menu-key "["  #'my/eyebrowse-new-window-config)
-              (my/set-menu-key ";"  #'eyebrowse-prev-window-config)
-              (my/set-menu-key "'"  #'eyebrowse-next-window-config)
-              (my/set-menu-key "]"  #'eyebrowse-close-window-config)
-              (my/set-menu-key "\\" #'eyebrowse-rename-window-config))
-    )
+  ;; (use-package eyebrowse
+  ;;   :ensure t
+  ;;   :diminish eyebrowse-mode
+  ;;   :init (setq eyebrowse-keymap-prefix (kbd "C-c C-\\"))
+  ;;   :config (progn
+  ;;             (setq eyebrowse-wrap-around t)
+  ;;             (eyebrowse-mode t)
+  ;; 
+  ;;             (defun my/eyebrowse-new-window-config ()
+  ;;               (interactive)
+  ;;               (let ((done nil))
+  ;;                 (dotimes (i 10)
+  ;;                   ;; start at 1 run till 0
+  ;;                   (let ((j (mod (+ i 1) 10)))
+  ;;                     (when (and (not done)
+  ;;                                (not (eyebrowse--window-config-present-p j)))
+  ;;                       (eyebrowse-switch-to-window-config j)
+  ;;                       (call-interactively 'eyebrowse-rename-window-config2 j)
+  ;;                       (setq done t)
+  ;;                       ))
+  ;;                   )))
+  ;; 
+  ;;             ;; I don't use latex-preview-pane
+  ;;             ;; (require 'latex-preview-pane)
+  ;;             ;; (defun my/close-latex-preview-pane-before-eyebrowse-switch ()
+  ;;             ;;   ;; latex-preview-pane uses window-parameters which are
+  ;;             ;;   ;; not preserved by eyebrowse, so we close the preview
+  ;;             ;;   ;; pane before switching, it will be regenerated when we
+  ;;             ;;   ;; edit the TeX file.
+  ;;             ;;   (when (lpp/window-containing-preview)
+  ;;             ;;     (delete-window (lpp/window-containing-preview))))
+  ;; 
+  ;;             ;; (add-to-list 'eyebrowse-pre-window-switch-hook
+  ;;             ;;              #'my/close-latex-preview-pane-before-eyebrowse-switch)
+  ;; 
+  ;;             ;; (my/set-menu-key "["  #'my/eyebrowse-new-window-config)
+  ;;             ;; (my/set-menu-key ";"  #'eyebrowse-prev-window-config)
+  ;;             ;; (my/set-menu-key "'"  #'eyebrowse-next-window-config)
+  ;;             ;; (my/set-menu-key "]"  #'eyebrowse-close-window-config)
+  ;;             ;; (my/set-menu-key "\\" #'eyebrowse-rename-window-config)
+  ;;             )
+  ;;   )
+#+END_SRC
+
+** Window handling
+
+*** Splitting
+#+BEGIN_SRC emacs-lisp
+  (defun my/vsplit-last-buffer ()
+    "Split the window vertically and display the previous buffer."
+    (interactive)
+    (split-window-vertically)
+    (other-window 1 nil)
+    (switch-to-next-buffer))
+
+  (defun my/hsplit-last-buffer ()
+    "Split the window horizontally and display the previous buffer."
+    (interactive)
+    (split-window-horizontally)
+    (other-window 1 nil)
+    (switch-to-next-buffer))
+
+  (bind-key "C-x 2" 'my/vsplit-last-buffer)
+  (bind-key "C-x 3" 'my/hsplit-last-buffer)
+
+  (setq split-width-threshold  100)
+  (setq split-height-threshold 60)
+
+  (defun my/split-window-prefer-horizontally (window)
+    "If there's only one window (excluding any possibly active
+           minibuffer), then split the current window horizontally."
+    (if (and (one-window-p t)
+             (not (active-minibuffer-window))
+             ( > (frame-width) (frame-height))
+             )
+        (let ((split-height-threshold nil))
+          (split-window-sensibly window))
+      (split-window-sensibly window)))
+
+  (setq split-window-preferred-function #'my/split-window-prefer-horizontally)
+  (setq window-combination-resize t)
+#+END_SRC
+
+*** Compilation window
+
+If there is no compilation window, open one at the bottom, spanning
+the complete width of the frame. Otherwise, reuse existing window. In
+the former case, if there was no error the window closes
+automatically.
+
+#+BEGIN_SRC emacs-lisp
+  (add-to-list 'display-buffer-alist
+               `(,(rx bos "*compilation*" eos)
+                 (display-buffer-reuse-window
+                  display-buffer-in-side-window)
+                 (reusable-frames . visible)
+                 (side            . bottom)
+                 (window-height   . 0.4)))
+#+END_SRC
+
+#+BEGIN_SRC emacs-lisp
+  (defun my/compilation-exit-autoclose (status code msg)
+    ;; If M-x compile exists with a 0
+    (when (and (eq status 'exit) (zerop code))
+      ;; and delete the *compilation* window
+      (let ((compilation-window (get-buffer-window (get-buffer "*compilation*"))))
+        (when (and (not (window-at-side-p compilation-window 'top))
+                   (window-at-side-p compilation-window 'left)
+                   (window-at-side-p compilation-window 'right))
+          (delete-window compilation-window))))
+    ;; Always return the anticipated result of compilation-exit-message-function
+    (cons msg code))
+
+  ;; Specify my function (maybe I should have done a lambda function)
+  (setq compilation-exit-message-function #'my/compilation-exit-autoclose)
+#+END_SRC
+
+If you change the variable ~compilation-scroll-output~ to a ~non-nil~
+value, the compilation buffer scrolls automatically to follow the
+output. If the value is ~first-error~, scrolling stops when the first
+error appears, leaving point at that error. For any other non-nil
+value, scrolling continues until there is no more output.
+
+#+BEGIN_SRC emacs-lisp
+  (setq compilation-scroll-output 'first-error)
+#+END_SRC
+
+** Mode line cleaning
+*** Diminish
+#+BEGIN_SRC emacs-lisp
+  (use-package diminish
+    :ensure t)
+#+END_SRC
+
+*** Delight 
+#+BEGIN_SRC emacs-lisp
+  (use-package delight
+    :ensure t)
+#+END_SRC
+
+** Jumping
+*** Avy
+#+BEGIN_SRC emacs-lisp
+(use-package avy
+  :ensure t
+  :bind ("C-c C-SPC" . avy-goto-word-1)
+  :config (progn
+            (setq avy-background t)
+            (key-chord-define-global "jj"  #'avy-goto-word-1)))
+#+END_SRC
+
+** Snippets
+
+*** Yasnippet
+#+BEGIN_SRC emacs-lisp
+(use-package yasnippet
+  :ensure t
+  :diminish yas-minor-mode
+  :config (progn
+            (yas-global-mode)
+            (setq yas-verbosity 1)))
+#+END_SRC
+
+** Helm Flx
+
+[[https://github.com/PythonNut/helm-flx][helm-flx]] implements intelligent helm fuzzy sorting, provided by [[https://github.com/lewang/flx][flx]].
+
+#+BEGIN_SRC emacs-lisp
+(use-package helm-flx
+  :ensure t
+  :config (progn
+            ;; these are helm configs, but they kind of fit here nicely
+            (setq helm-M-x-fuzzy-match                  t
+                  helm-bookmark-show-location           t
+                  helm-buffers-fuzzy-matching           t
+                  helm-completion-in-region-fuzzy-match t
+                  helm-file-cache-fuzzy-match           t
+                  helm-imenu-fuzzy-match                t
+                  helm-mode-fuzzy-match                 t
+                  helm-locate-fuzzy-match               nil
+                  helm-quick-update                     t
+                  helm-recentf-fuzzy-match              nil
+                  helm-semantic-fuzzy-match             t)
+            (helm-flx-mode +1)))
 #+END_SRC
 
+
 ** Tinyprocmail
 
 #+BEGIN_SRC emacs-lisp
   ;; load tinyprocmail
-  (with-library 'tinyprocmail
-    ; (setq tinyprocmail--procmail-version "v3.22")
-    (add-hook 'tinyprocmail--load-hook 'tinyprocmail-install))
+  (use-package tinyprocmail
+    :ensure f
+    :config (with-library 'tinyprocmail
+              ;; (setq tinyprocmail--procmail-version "v3.22")
+              (add-hook 'tinyprocmail--load-hook 'tinyprocmail-install))
+  )
 #+END_SRC
 
 ** Magit
 #+BEGIN_SRC emacs-lisp :tangle don-configuration.el
-  ; don't verify where we are pushing
-  (setq magit-push-always-verify nil)
-  ;; refine diffs always (hilight words)
-  (setq magit-diff-refine-hunk 'all)
-  ;; load magit-annex
-  (setq load-path
-        (append '("~/lib/emacs_el/magit-annex")
-                load-path))
-  (require 'magit-annex)
+  (use-package magit
+    :ensure t
+    :config
+    ;; don't verify where we are pushing
+    (setq magit-push-always-verify nil)
+    ;; refine diffs always (hilight words)
+    (setq magit-diff-refine-hunk nil)
+    ;; load magit-annex
+    (setq load-path
+          (append '("~/lib/emacs_el/magit-annex")
+                  load-path))
+    )
+  (use-package magit-annex
+    :ensure t
+  )
 #+END_SRC
 
 ** Perl
 
 ** Helm
 #+BEGIN_SRC emacs-lisp
-(require 'don-helm)
+  (use-package helm
+    :ensure t
+    :config
+    (helm-mode 1)
+    (define-key global-map [remap find-file] 'helm-find-files)
+    (define-key global-map [remap occur] 'helm-occur)
+    (define-key global-map [remap list-buffers] 'helm-buffers-list)
+    (define-key global-map [remap dabbrev-expand] 'helm-dabbrev)
+    (global-set-key (kbd "M-x") 'helm-M-x)
+    (unless (boundp 'completion-in-region-function)
+      (define-key lisp-interaction-mode-map [remap completion-at-point] 'helm-lisp-completion-at-point)
+      (define-key emacs-lisp-mode-map       [remap completion-at-point] 'helm-lisp-completion-at-point))
+    (add-hook 'kill-emacs-hook #'(lambda () (and (file-exists-p "$TMP") (delete-file "$TMP"))))
+  )
 #+END_SRC
 ** Hydra
 #+BEGIN_SRC emacs-lisp :tangle don-configuration.el
   ;; this is in the very newest auctex; avoid for now
   (add-to-list 'LaTeX-fill-excluded-macros
                '("Sexpr"))
+  (add-to-list 'TeX-style-path '"/home/don/lib/emacs_el/auctex/style")
   ;; REFTEX (much enhanced management of cross-ref, labels, etc)
   ;; http://www.strw.leidenuniv.nl/~dominik/Tools/reftex/
   (autoload 'reftex-mode     "reftex" "RefTeX Minor Mode" t)
           ("OM" "{")
           ("DL" "{")
           ("fixme" "{")))
-      
+
   (setq-default TeX-parse-self t)
   (setq-default TeX-auto-save t)
   (setq-default TeX-master nil)
 #+END_SRC
 ** ESS
 #+BEGIN_SRC emacs-lisp
-  (require 'ess_configuration)
+  (use-package ess
+    :ensure t
+    :config (require 'ess_configuration))
 #+END_SRC
 
+** Rainbowmode
+From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colorizes color strings
+
+#+BEGIN_SRC emacs-lisp
+  (use-package rainbow-mode
+    :ensure f
+    ;; add ess to the x major mode
+    :init (add-to-list 'rainbow-x-colors-major-mode-list 'ESS[S])
+    (add-to-list 'rainbow-x-colors-major-mode-list 'ESS[R])
+  )
+#+END_SRC
 
 ** Polymode
 #+BEGIN_SRC emacs-lisp
   ; (require 'google-weather)
   ; (require 'org-google-weather)
   ; (setq-default org-google-weather-format "%i %c, [%l,%h] %s %C")
-
-  ; http://julien.danjou.info/projects/emacs-packages#rainbow-mode
-  ; this colorizes color strings
-  (require 'rainbow-mode)
-  ; add ess to the x major mode
-  (add-to-list 'rainbow-x-colors-major-mode-list 'ESS[S])
-  (add-to-list 'rainbow-x-colors-major-mode-list 'ESS[R])
-
+  
   (global-set-key "\C-xp" 'server-edit)
 
   (setq-default auto-mode-alist (cons '("\.wml$" . 
   (put 'downcase-region 'disabled nil)
   (put 'narrow-to-region 'disabled nil)
 
-
+  (setq ispell-program-name "ispell")
   (autoload 'flyspell-mode "flyspell" "On-the-fly spelling checker." t)
   (add-hook 'message-mode-hook 'turn-on-flyspell)
   (add-hook 'text-mode-hook 'turn-on-flyspell)