X-Git-Url: https://git.donarmstrong.com/?p=lib.git;a=blobdiff_plain;f=emacs_el%2Fconfiguration%2Fdon-configuration.org;h=51b159eb8f56c267657332e4908099d5e75b400a;hp=03de60c7bf743e750196016e0024bb851a0b19fb;hb=91f57771c6e0bb956f94e7dce100c4f76f658892;hpb=66a0eac771beb1b3cd6e26ed6213972f07729f2a diff --git a/emacs_el/configuration/don-configuration.org b/emacs_el/configuration/don-configuration.org index 03de60c..51b159e 100644 --- a/emacs_el/configuration/don-configuration.org +++ b/emacs_el/configuration/don-configuration.org @@ -28,12 +28,18 @@ Borrowed from https://github.com/nilcons/emacs-use-package-fast/ to load [[https://github.com/jwiegley/use-package/][use-package]] even faster #+BEGIN_SRC emacs-lisp - (setq package-enable-at-startup nil) - (setq package--init-file-ensured t) - (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/") - ("melpa" . "https://melpa.org/packages/") - ("org" . "http://orgmode.org/elpa/") )) (eval-and-compile + ;; add /etc/ssl/ca-global/ca-certificates.crt so that we can + ;; download packages when we're on Debian hosts which chop down the + ;; list of available certificates + (require 'gnutls) + (add-to-list 'gnutls-trustfiles "/etc/ssl/ca-global/ca-certificates.crt") + (setq package-enable-at-startup nil) + (setq package--init-file-ensured t) + (setq package-user-dir "~/var/emacs/elpa") + (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/") + ("melpa" . "https://melpa.org/packages/") + ("org" . "http://orgmode.org/elpa/"))) (setq use-package-verbose (not (bound-and-true-p byte-compile-current-file)))) (mapc #'(lambda (add) (add-to-list 'load-path add)) (eval-when-compile @@ -52,9 +58,21 @@ load [[https://github.com/jwiegley/use-package/][use-package]] even faster nil)) load-path)))))) - (require 'use-package) - (require 'diminish) + ;;; fix up info paths for packages + (with-eval-after-load "info" + (info-initialize) + (dolist (dir (directory-files package-user-dir)) + (let ((fdir (concat (file-name-as-directory package-user-dir) dir))) + (unless (or (member dir '("." ".." "archives" "gnupg")) + (not (file-directory-p fdir)) + (not (file-exists-p (concat (file-name-as-directory fdir) "dir")))) + (add-to-list 'Info-directory-list fdir))))) + + + (eval-when-compile + (require 'use-package)) (require 'bind-key) + (require 'diminish) #+END_SRC ** Paradox #+BEGIN_SRC emacs-lisp @@ -89,13 +107,14 @@ load [[https://github.com/jwiegley/use-package/][use-package]] even faster * Variables ** Safe Local Variables #+BEGIN_SRC emacs-lisp - (setq safe-local-variable-values - (quote ((auto-save-default) - (make-backup-files) - (cperl-indent-level . 4) - (indent-level . 4) - (indent-tabs-mode . f) - ))) +(setq safe-local-variable-values + (quote ((auto-save-default) + (make-backup-files) + (cperl-indent-level . 4) + (indent-level . 4) + (indent-tabs-mode . f) + (vcl-indent-level . 4) + ))) #+END_SRC * Memory #+BEGIN_SRC emacs-lisp @@ -113,6 +132,14 @@ load [[https://github.com/jwiegley/use-package/][use-package]] even faster (add-hook 'minibuffer-exit-hook #'don/minibuffer-exit-hook) #+END_SRC * Modules +** Spacemacs theme +#+BEGIN_SRC emacs-lisp +(use-package spacemacs-common + :ensure spacemacs-theme + :config + (load-theme 'spacemacs-dark t) + ) +#+END_SRC ** Hippie Expand #+BEGIN_SRC emacs-lisp (use-package hippie-exp @@ -291,6 +318,7 @@ value, scrolling continues until there is no more output. *** Avy #+BEGIN_SRC emacs-lisp (use-package avy + :if (>= emacs-major-version 25) :ensure t :bind (("C-c C-" . avy-goto-word-or-subword-1) ("C-c j j" . avy-goto-word-or-subword-1) @@ -345,6 +373,7 @@ value, scrolling continues until there is no more output. *** Auto-YASnippet #+BEGIN_SRC emacs-lisp (use-package auto-yasnippet + :ensure t :bind (("H-w" . aya-create) ("H-y" . aya-expand) ) @@ -352,32 +381,31 @@ value, scrolling continues until there is no more output. #+END_SRC ** Company #+BEGIN_SRC emacs-lisp - (use-package company - :ensure t - :bind (("M-/" . company-complete)) - :config - (setq company-echo-delay 0 ; remove blinking - company-show-numbers t ; show numbers for easy selection - company-selection-wrap-around t - company-require-match nil - company-dabbrev-ignore-case t - company-dabbrev-ignore-invisible t - company-dabbrev-other-buffers t - company-dabbrev-downcase nil - company-dabbrev-code-everywhere t - company-tooltip-align-annotations t - company-minimum-prefix-length 1 - company-global-modes '(not) - company-lighter-base "(C)") - (global-company-mode 1) - - (bind-key "C-n" #'company-select-next company-active-map) - (bind-key "C-p" #'company-select-previous company-active-map) - (bind-key "" #'company-complete company-active-map) - (bind-key "M-?" #'company-show-doc-buffer company-active-map) - (bind-key "M-." #'company-show-location company-active-map) - (bind-key "M-/" #'company-complete-common org-mode-map) - ) +(use-package company + :ensure t + :bind (("M-/" . company-complete)) + :config + (setq company-echo-delay 0 ; remove blinking + company-show-numbers t ; show numbers for easy selection + company-selection-wrap-around t + company-require-match nil + company-dabbrev-ignore-case t + company-dabbrev-ignore-invisible t + company-dabbrev-other-buffers t + company-dabbrev-downcase nil + company-dabbrev-code-everywhere t + company-tooltip-align-annotations t + company-minimum-prefix-length 1 + company-global-modes '(not) + company-lighter-base "(C)") + (global-company-mode 1) + :bind (:map company-active-map + ("C-n" . company-select-next) + ("C-p" . company-select-previous) + ("M-?" . company-show-doc-buffer) + ("M-." . company-show-location) + ) + ) #+END_SRC *** C/C++ #+BEGIN_SRC emacs-lisp @@ -662,6 +690,13 @@ value, scrolling continues until there is no more output. (setq ediff-window-setup-function 'ediff-setup-windows-plain) ) #+END_SRC +** Do the Right Thing Indenting +Attempts to automatically identify the right indentation for a file +#+BEGIN_SRC emacs-lisp +(use-package dtrt-indent + :ensure t +) +#+END_SRC ** VCL --editing varnish configuration files #+BEGIN_SRC emacs-lisp (use-package vcl-mode @@ -1187,15 +1222,26 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori ** Polymode #+BEGIN_SRC emacs-lisp - (use-package polymode - :config - (use-package poly-R) - (use-package poly-noweb) - (use-package poly-markdown) - :mode ("\\.Snw" . poly-noweb+r-mode) - :mode ("\\.Rnw" . poly-noweb+r-mode) - :mode ("\\.Rmd" . poly-markdown+r-mode) - ) +(use-package poly-noweb + :ensure t + :after polymode + + ) +(use-package poly-markdown + :ensure t + :after polymode + ) +(use-package poly-R + :ensure t + :after (:all polymode poly-markdown poly-noweb) + ; :mode ("\\.Snw" . poly-noweb+r-mode) + ; :mode ("\\.Rnw" . poly-noweb+r-mode) + ; :mode ("\\.Rmd" . poly-markdown+r-mode) + ) +(use-package polymode + :ensure t + ) + #+END_SRC ** Outlining @@ -1257,6 +1303,8 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori ** Web Mode #+BEGIN_SRC emacs-lisp (use-package web-mode + :load-path "/home/don/projects/web-mode/" + :mode ("\\.\\(tx|tmpl\\)\\'" . web-mode) :config (add-to-list 'auto-mode-alist '("\\.tmpl\\'" . web-mode)) (setq web-mode-enable-engine-detection t) @@ -1307,53 +1355,76 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori (setq default-abbrev-mode t)) #+END_SRC +** Go language +#+BEGIN_SRC emacs-lisp +(use-package go-mode + :diminish "go" + :mode "\\.go" + ) +#+END_SRC + +** Expand region +#+BEGIN_SRC emacs-lisp +(use-package expand-region + :bind (("C-=" . 'er/expand-region)) + ) +#+END_SRC + +** Dockerfile +#+BEGIN_SRC emacs-lisp +(use-package dockerfile-mode + :mode "Dockerfile" + ) +#+END_SRC + * Email ** Mutt *** Message-mode #+BEGIN_SRC emacs-lisp - (use-package message - :ensure f - :diminish (message "✉") - :mode ("muttng-[a-z0-9]+-[0-9]+-" . message-mode) - :mode ("mutt-[a-z0-9]+-[0-9]+-" . message-mode) - :hook 'my/message-mode-settings - :hook 'turn-on-flyspell - :bind (:map message-mode-map - ("C-c C-a" . my/post-attach-file)) - :delight (message-mode "✉") - :config - (defun my/message-mode-settings () - (font-lock-add-keywords nil - '(("^[ \t]*>[ \t]*>[ \t]*>.*$" - (0 'message-multiply-quoted-text-face)) - ("^[ \t]*>[ \t]*>.*$" - (0 'message-double-quoted-text-face)))) - ) +(use-package message + :ensure f + :diminish (message "✉") + :mode ("muttng-[a-z0-9]+-[0-9]+-" . message-mode) + :mode ("mutt-[a-z0-9]+-[0-9]+-" . message-mode) + :hook 'my/message-mode-settings + :hook 'turn-on-flyspell + :bind (:map message-mode-map + ("C-c C-a" . my/post-attach-file)) + :delight (message-mode "✉") + :config + (defun my/message-mode-settings () + (font-lock-add-keywords nil + '(("^[ \t]*>[ \t]*>[ \t]*>.*$" + (0 'message-multiply-quoted-text-face)) + ("^[ \t]*>[ \t]*>.*$" + (0 'message-double-quoted-text-face)))) + ) - (defun my/post-attach-file () - "Prompt for an attachment." - (interactive) - (let ((file (read-file-name "Attach file: " nil nil t nil))) - (my/header-attach-file file ""))) - - (defun my/header-attach-file (file description) - "Attach a FILE to the current message (works with Mutt). - Argument DESCRIPTION MIME description." - (interactive "fAttach file: \nsDescription: ") - (when (> (length file) 0) - (save-excursion - (save-match-data - (save-restriction - (widen) - (goto-char (point-min)) - (search-forward-regexp "^$") - (insert (concat "Attach: " (replace-regexp-in-string "\\([[:space:]\\]\\)" "\\\\\\1" (file-truename file)) " " - description "\n")) - (message (concat "Attached '" file "'.")) - (setq post-has-attachment t)))))) - - (setq mail-yank-prefix "> ") - ) + (defun my/post-attach-file () + "Prompt for an attachment." + (interactive) + (let ((file (read-file-name "Attach file: " nil nil t nil))) + (my/header-attach-file file ""))) + + (defun my/header-attach-file (file description) + "Attach a FILE to the current message (works with Mutt). + Argument DESCRIPTION MIME description." + (interactive "fAttach file: \nsDescription: ") + (when (> (length file) 0) + (save-excursion + (save-match-data + (save-restriction + (widen) + (goto-char (point-min)) + (search-forward-regexp "^$") + (insert (concat "Attach: " (replace-regexp-in-string "\\([[:space:]\\]\\)" "\\\\\\1" (file-truename file)) " " + description "\n")) + (message (concat "Attached '" file "'.")) + (setq post-has-attachment t)))))) + + (setq mail-yank-prefix "> ") + (setq mail-header-separator "") ; fix broken header detection +) #+END_SRC *** Muttrc mode #+BEGIN_SRC emacs-lisp @@ -1391,6 +1462,24 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori (setq-default org-log-done 'time) (setq-default org-agenda-ndays 5) + (setq org-agenda-sticky t) + (defun dla/show-org-agenda () + (interactive) + (let (agendabuffer + '(delq nil + (mapcar (lambda (x) + (and (string-match-p + "\*Org Agenda.*\*" + (buffer-name x)) + x) + ) + (buffer-list)))) + (if agendabuffer + (switch-to-buffer + (buffer-name agendabuffer)) + (org-agenda-list))) + (delete-other-windows)) + ;; agenda configuration ;; Do not dim blocked tasks (setq org-agenda-dim-blocked-tasks nil) @@ -1484,6 +1573,8 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori "~/projects/org-notes/wildman.org" "~/projects/org-notes/uddin.org" "~/projects/org-notes/reviews.org" + "~/projects/org-notes/laurel.org" + "~/projects/org-notes/from-calendar.org" "~/org-mode/from-mobile.org" "~/projects/org-notes/fh.org"))) @@ -1578,12 +1669,12 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori (" I" . bh/punch-in) (" O" . bh/punch-out) (" SPC" . bh/clock-in-last-task) - ("" . org-agenda) + ("" . dla/show-org-agenda) ;; ("" . bh/org-todo) ("" . bh/widen) ("" . bh/set-truncate-lines) ("" . org-cycle-agenda-files) - (" " . org-agenda) + (" " . dla/show-org-agenda) (" b" . bbdb) (" c" . calendar) (" f" . boxquote-insert-file) @@ -1654,6 +1745,16 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori ; (lambda () ; (add-hook 'before-save-hook 'my/org-add-ids-to-headlines-in-file nil 'local))) #+END_SRC +** Org ID locations +#+BEGIN_SRC emacs-lisp +(use-package find-lisp + :ensure t) +(setq org-agenda-text-search-extra-files + (append '(agenda-archives) + (find-lisp-find-files "~/projects/org-notes" "\.org$") + (find-lisp-find-files "~/projects/org-notes" "\.org_archive$") + )) +#+END_SRC ** Keywords (TODO) #+BEGIN_SRC emacs-lisp (setq org-todo-keywords @@ -1754,7 +1855,9 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori (setq my-org-protocol-flag t)) (defadvice org-insert-todo-heading (after dla/create-id activate) - (org-id-get-create) + (unless (org-in-item-p) + (org-id-get-create) + ) ) ;; org modules @@ -1862,29 +1965,33 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori #+END_SRC ** General Org Babel Configuration #+BEGIN_SRC emacs-lisp - ;; org babel support - (org-babel-do-load-languages - 'org-babel-load-languages - '((emacs-lisp . t ) - (R . t) - (latex . t) - (ditaa . t) - (dot . t) - )) - ;; use graphviz-dot for dot things - (add-to-list 'org-src-lang-modes '("dot" . graphviz-dot)) - ;; org-babel-by-backend - (defmacro org-babel-by-backend (&rest body) - `(case (if (boundp 'backend) - (org-export-backend-name backend) - nil) ,@body)) - - (defun my/fix-inline-images () - (when org-inline-image-overlays - (org-redisplay-inline-images))) - - (add-hook 'org-babel-after-execute-hook - 'my/fix-inline-images) +;; org babel support +(org-babel-do-load-languages + 'org-babel-load-languages + '((emacs-lisp . t ) + (R . t) + (latex . t) + (ditaa . t) + (dot . t) + )) +;; set the right path to ditaa.jar +(setq org-ditaa-jar-path "/usr/share/ditaa/ditaa.jar") +;; use graphviz-dot for dot things +(add-to-list 'org-src-lang-modes '("dot" . graphviz-dot)) +;; do not indent begin_src blocks +(setq org-edit-src-content-indentation 0) +;; org-babel-by-backend +(defmacro org-babel-by-backend (&rest body) + `(case (if (boundp 'backend) + (org-export-backend-name backend) + nil) ,@body)) + +(defun my/fix-inline-images () + (when org-inline-image-overlays + (org-redisplay-inline-images))) + +(add-hook 'org-babel-after-execute-hook + 'my/fix-inline-images) #+END_SRC ** LaTeX configuration @@ -2276,18 +2383,19 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori #+END_SRC ** Org-Gcal #+BEGIN_SRC emacs-lisp - (use-package calfw - :ensure f - ) - (use-package calfw-org - :ensure f - ) - (use-package org-gcal - :ensure f - :config '((if (file-readable-p "~/.hide/org_gcal.el") - (load-file "~/.hide/org_gcal.el")) - ) - ) +(use-package calfw + :ensure f + ) +(use-package calfw-org + :ensure f + ) +(use-package org-gcal + :if (file-readable-p "~/.hide/org_gcal.el") + :ensure f + :config '((if (file-readable-p "~/.hide/org_gcal.el") + (load-file "~/.hide/org_gcal.el")) + ) + ) #+END_SRC ** appt integration #+BEGIN_SRC emacs-lisp @@ -2346,8 +2454,7 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori * Debian ** debian-changelog #+BEGIN_SRC emacs-lisp - (use-package debian-changelog - :ensure f + (use-package debian-changelog-mode :mode "debian/changelog" :config (setq debian-changelog-mailing-address "don@debian.org") @@ -2360,10 +2467,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori (setq case-fold-search t) (setq confirm-kill-emacs (quote y-or-n-p)) (setq cperl-lazy-help-time nil) - (display-time) - (setq display-time-24hr-format t) - (setq display-time-day-and-date t) - (display-time-mode 1) (global-font-lock-mode 1) (icomplete-mode 1) (setq log-edit-keep-buffer t) @@ -2441,7 +2544,7 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori If the envvar EMACS_SERVER_NAME is set, consider this a separate emacs, and use a different desktop file to restore history #+BEGIN_SRC emacs-lisp - (use-package emacs + (use-package desktop :demand :config (setq desktop-base-file-name