X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=emacs_el%2Fconfiguration%2Fdon-configuration.org;h=57eb668ea00411faa9549fa399005599593b5808;hb=da674b6668d496bc13ccd15c81778b810b00d27c;hp=a5a1035b2d1ed4f98c80f9c16d806efc4e4bbf84;hpb=9493be6e00c0b940d31eb74ac08e459bbf189e07;p=lib.git diff --git a/emacs_el/configuration/don-configuration.org b/emacs_el/configuration/don-configuration.org index a5a1035..57eb668 100644 --- a/emacs_el/configuration/don-configuration.org +++ b/emacs_el/configuration/don-configuration.org @@ -30,6 +30,9 @@ 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 (setq use-package-verbose (not (bound-and-true-p byte-compile-current-file)))) (mapc #'(lambda (add) (add-to-list 'load-path add)) @@ -49,9 +52,6 @@ load [[https://github.com/jwiegley/use-package/][use-package]] even faster nil)) load-path)))))) - (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/") - ("melpa" . "https://melpa.org/packages/") - ("org" . "http://orgmode.org/elpa/") )) (require 'use-package) (require 'diminish) (require 'bind-key) @@ -407,6 +407,51 @@ value, scrolling continues until there is no more output. )) #+END_SRC +** Markdown mode +#+BEGIN_SRC emacs-lisp + (use-package markdown-mode + :ensure t + :mode (("\\.md\\'" . markdown-mode) + ("\\.mdwn\\'" . markdown-mode) + ("README\\.md\\'" . gfm-mode) + ) + :config + (setq markdown-enable-math t) + (setq markdown-follow-wiki-link-on-enter nil) + (bind-key "M-." #'markdown-jump markdown-mode-map) + (add-hook 'markdown-mode-hook #'flyspell-mode) + (add-hook 'markdown-mode-hook #'outline-minor-mode) + (bind-key "C-" #'outline-cycle markdown-mode-map) + ) + +#+END_SRC +** SQL mode +#+BEGIN_SRC emacs-lisp + ; load sql-indent when sql is loaded +(use-package sql + :mode (("\\.sql\\'" . sql-mode)) + :config + (require sql-indent)) +#+END_SRC +** Ediff +#+BEGIN_SRC emacs-lisp + (use-package ediff + :commands ediff ediff3 + :ensure f + :config + ;; ediff configuration + ;; don't use the multi-window configuration + (setq ediff-window-setup-function 'ediff-setup-windows-plain) + ) +#+END_SRC +** VCL --editing varnish configuration files +#+BEGIN_SRC emacs-lisp + (use-package vcl-mode + :ensure t + :mode "\\.vcl\\'" + ) + +#+END_SRC ** Helm #+BEGIN_SRC emacs-lisp (defun malb/helm-omni (&rest arg) @@ -729,14 +774,16 @@ This can be used to link things pretty quickly if necessary ** Tramp #+BEGIN_SRC emacs-lisp - (add-to-list 'tramp-methods '("vcsh" - (tramp-login-program "vcsh") - (tramp-login-args - (("enter") - ("%h"))) - (tramp-remote-shell "/bin/sh") - (tramp-remote-shell-args - ("-c")))) + (use-package tramp + :config + (add-to-list 'tramp-methods '("vcsh" + (tramp-login-program "vcsh") + (tramp-login-args + (("enter") + ("%h"))) + (tramp-remote-shell "/bin/sh") + (tramp-remote-shell-args + ("-c"))))) #+END_SRC ** Reftex #+BEGIN_SRC emacs-lisp @@ -868,10 +915,19 @@ This can be used to link things pretty quickly if necessary #+BEGIN_SRC emacs-lisp (use-package ess :ensure t + :commands R + :mode ("\\.R\\'" . ess-r-mode) + :bind (:map ess-mode-map + ("C-c C-R" . dla/ess-region-remote-eval)) + :init + (autoload 'ess-r-mode "ess-site" nil t) + (autoload 'R "ess-site" nil t) :config + ; actually load the rest of ess + (require 'ess-site) (defun ess-change-directory (path) "Set the current working directory to PATH for both *R* and Emacs." - (interactive "DDirectory to change to: ") + (interactive "Directory to change to: ") (when (file-exists-p path) (ess-command (concat "setwd(\"" path "\")\n")) @@ -890,11 +946,11 @@ This can be used to link things pretty quickly if necessary ((looking-at "^[a-zA-Z0-9_\.]+ ?<- ?function(.*{") 3) (t 1000))) )) - (add-hook 'ess-mode-hook - '(lambda () - (local-set-key (kbd "C-c C-R") - 'dla/ess-region-remote-eval))) - + (defun dla/ess-region-remote-eval (start end) + "Evaluate region in a remote ESS instance" + (interactive "r") + (shell-command-on-region start end "eval_r" (get-buffer-create "***essregionremoteeval***")) + kill-buffer "***essregionremoteeval***") ;; Don't restore history or save workspace image '(inferior-R-args "--no-restore-history --no-save") ) @@ -928,6 +984,15 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori *** Outline magic #+BEGIN_SRC emacs-lisp (use-package outline-magic) +#+END_SRC +*** Outline mode +#+BEGIN_SRC emacs-lisp +;; change the outline mode prefix from C-c @ to C-c C-2 +(setq outline-minor-mode-prefix "C-c C-2") +;;(add-hook 'outline-minor-mode-hook +;; (lambda () (local-set-key (kbd "C-c C-2") +;; outline-mode-prefix-map))) + #+END_SRC ** Writeroom Mode #+BEGIN_SRC emacs-lisp @@ -965,10 +1030,10 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori [[https://github.com/magnars/multiple-cursors.el][Multiple Cursors]] #+BEGIN_SRC emacs-lisp (use-package multiple-cursors - :bind (("C-;" . mc/mark-all-dwim) - ("C-<" . mc/mark-previous-like-this) - ("C->" . mc/mark-next-like-this) - ("C-S-c C-S-c" . mc/edit-lines)) + :bind* (("C-;" . mc/mark-all-dwim) + ("C-<" . mc/mark-previous-like-this) + ("C->" . mc/mark-next-like-this) + ("C-S-c C-S-c" . mc/edit-lines)) ) #+END_SRC ** Web Mode @@ -984,7 +1049,7 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori ** Spamassassin Mode #+BEGIN_SRC emacs-lisp (use-package spamassassin-mode - :defer + :commands spamassassin-mode :ensure f ) #+END_SRC @@ -995,50 +1060,79 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori :commands password-store-edit password-store-create ) #+END_SRC +** CSS mode +#+BEGIN_SRC emacs-lisp + (use-package css + :mode "\\.css'" + :config + ;; fix up css mode to not be silly + ;; from http://www.stokebloke.com/wordpress/2008/03/21/css-mode-indent-buffer-fix/ + (setq cssm-indent-level 4) + (setq cssm-newline-before-closing-bracket t) + (setq cssm-indent-function #'cssm-c-style-indenter) + (setq cssm-mirror-mode nil)) +#+END_SRC +** Abbrev Mode +#+BEGIN_SRC emacs-lisp + (use-package abbrev + :diminish abbrev-mode + :config + ;; load abbreviations from + (setq abbrev-file-name + "~/.emacs_abbrev_def") + + ;; read the abbrev file if it exists + (if (file-exists-p abbrev-file-name) + (quietly-read-abbrev-file)) + + ;; for now, use abbrev mode everywhere + (setq default-abbrev-mode t)) +#+END_SRC + * Email ** Mutt *** Message-mode #+BEGIN_SRC emacs-lisp (use-package message :ensure f - :diminish "✉" - :mode "muttng-[a-z0-9]+-[0-9]+-" - :mode "mutt-[a-z0-9]+-[0-9]+-" + :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)) - :config + ("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)))) + '(("^[ \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)) - (description (string-read "Description: "))) - (my/header-attach-file file description))) + (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)))))) + (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 "> ") ) @@ -1054,16 +1148,20 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori * Base emacs ** Reverting buffers #+BEGIN_SRC emacs-lisp - (setq global-auto-revert-non-file-buffers t - global-auto-revert-ignore-modes '(pdf-view-mode) - auto-revert-verbose nil) - (global-auto-revert-mode 1) + (use-package autorevert + :diminish auto-revert-mode + :config + (setq global-auto-revert-non-file-buffers t + global-auto-revert-ignore-modes '(pdf-view-mode) + auto-revert-verbose nil) + (global-auto-revert-mode 1)) #+END_SRC * Org Mode ** Use-package and load things #+BEGIN_SRC emacs-lisp (use-package org + :delight (org-mode "ø") :config #+END_SRC @@ -1256,50 +1354,45 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori #+END_SRC ** Org mode key bindings #+BEGIN_SRC emacs-lisp - ; org mode configuration from http://doc.norang.ca/org-mode.html + ;; org mode configuration from http://doc.norang.ca/org-mode.html ;; Custom Key Bindings - (global-set-key (kbd "") 'org-agenda) - ; (global-set-key (kbd "") 'bh/org-todo) - (global-set-key (kbd "") 'bh/widen) - (global-set-key (kbd "") 'bh/set-truncate-lines) - (global-set-key (kbd "") 'org-cycle-agenda-files) - (global-set-key (kbd " ") 'bh/show-org-agenda) - (global-set-key (kbd " b") 'bbdb) - (global-set-key (kbd " c") 'calendar) - (global-set-key (kbd " f") 'boxquote-insert-file) - (global-set-key (kbd " h") 'bh/hide-other) - (global-set-key (kbd " n") 'bh/toggle-next-task-display) - (global-set-key (kbd " w") 'widen) - - ; change the outline mode prefix from C-c @ to C-c C-2 - (setq outline-minor-mode-prefix "C-c C-2") - ;(add-hook 'outline-minor-mode-hook - ; (lambda () (local-set-key (kbd "C-c C-2") - ; outline-mode-prefix-map))) - - (global-set-key (kbd " I") 'bh/punch-in) - (global-set-key (kbd " O") 'bh/punch-out) - - (global-set-key (kbd " o") 'bh/make-org-scratch) - - (global-set-key (kbd " r") 'boxquote-region) - (global-set-key (kbd " s") 'bh/switch-to-scratch) - - (global-set-key (kbd " t") 'bh/insert-inactive-timestamp) - (global-set-key (kbd " T") 'bh/toggle-insert-inactive-timestamp) - - (global-set-key (kbd " v") 'visible-mode) - (global-set-key (kbd " l") 'org-toggle-link-display) - (global-set-key (kbd " SPC") 'bh/clock-in-last-task) - (global-set-key (kbd "C-") 'previous-buffer) - (global-set-key (kbd "M-") 'org-toggle-inline-images) - (global-set-key (kbd "C-x n r") 'narrow-to-region) - (global-set-key (kbd "C-") 'next-buffer) - (global-set-key (kbd "") 'org-clock-goto) - (global-set-key (kbd "C-") 'org-clock-in) - (global-set-key (kbd "C-s-") 'bh/save-then-publish) - (global-set-key (kbd "C-c c") 'org-capture) - + :bind* ((" a" . org-agenda) + (" I" . bh/punch-in) + (" O" . bh/punch-out) + (" SPC" . bh/clock-in-last-task) + ("" . org-agenda) + ;; ("" . bh/org-todo) + ("" . bh/widen) + ("" . bh/set-truncate-lines) + ("" . org-cycle-agenda-files) + (" " . bh/show-org-agenda) + (" b" . bbdb) + (" c" . calendar) + (" f" . boxquote-insert-file) + (" h" . bh/hide-other) + (" n" . bh/toggle-next-task-display) + (" w" . widen) + + (" o" . bh/make-org-scratch) + + (" r" . boxquote-region) + (" s" . bh/switch-to-scratch) + + (" t" . bh/insert-inactive-timestamp) + (" T" . bh/toggle-insert-inactive-timestamp) + + (" v" . visible-mode) + (" l" . org-toggle-link-display) + (" SPC" . bh/clock-in-last-task) + ("C-" . previous-buffer) + ("M-" . org-toggle-inline-images) + ("C-x n r" . narrow-to-region) + ("C-" . next-buffer) + ("" . org-clock-goto) + ("C-" . org-clock-in) + ("C-s-" . bh/save-then-publish) + ("C-c c" . org-capture)) + :config #+END_SRC ** Utility Functions #+BEGIN_SRC emacs-lisp @@ -2091,20 +2184,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori (fset 'perl-mode 'cperl-mode) ;;(load-file "cperl-mode.el") - (require 'vcl-mode) - - (global-set-key "\C-xp" 'server-edit) - - (setq-default auto-mode-alist (cons '("\.wml$" . - (lambda () (html-mode) (auto-fill-mode))) - auto-mode-alist)) - - - ; use markdown mode for mdwn files - (add-to-list 'auto-mode-alist '("\\.mdwn$" . markdown-mode)) - (add-to-list 'auto-mode-alist '("\\.md$" . markdown-mode)) - - ;; tramp configuration (setq tramp-use-ssh-controlmaster-options nil) @@ -2141,20 +2220,34 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori (column-number-mode t) - ; abbrev mode settings - ; load abbreviations from - (setq abbrev-file-name - "~/.emacs_abbrev_def") - - ; read the abbrev file if it exists - (if (file-exists-p abbrev-file-name) - (quietly-read-abbrev-file)) - - ; for now, use abbrev mode everywhere - (setq default-abbrev-mode t) - - (desktop-load-default) - (desktop-read) +#+END_SRC +** Desktop-save-mode +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 + :demand + :config + (setq desktop-base-file-name + (convert-standard-filename + (concat ".emacs" + (or (getenv "EMACS_SERVER_NAME") + "") + ".desktop") + )) + (setq desktop-base-lock-name + (convert-standard-filename + (concat desktop-base-file-name + ".lock"))) + (setq desktop-auto-save-timeout 60) + (setq desktop-restore-eager 5) + (setq desktop-lazy-verbose nil) + (desktop-save-mode 1) + ; (desktop-read) + ) +#+END_SRC +** Misc (Uncharacterized) +#+BEGIN_SRC emacs-lisp '(icomplete-mode on) (custom-set-faces ;; custom-set-faces was added by Custom. @@ -2196,30 +2289,6 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori (define-key cm-map "f" 'outline-forward-same-level) ; Forward - same level (define-key cm-map "b" 'outline-backward-same-level) ; Backward - same level (global-set-key "\M-o" cm-map) - - ; ediff configuration - ; don't use the multi-window configuration - (setq ediff-window-setup-function 'ediff-setup-windows-plain) - - ; fix up css mode to not be silly - ; from http://www.stokebloke.com/wordpress/2008/03/21/css-mode-indent-buffer-fix/ - (setq cssm-indent-level 4) - (setq cssm-newline-before-closing-bracket t) - (setq cssm-indent-function #'cssm-c-style-indenter) - (setq cssm-mirror-mode nil) - - (require 'multi-web-mode) - (setq mweb-default-major-mode 'html-mode) - (setq mweb-tags '((php-mode "<\\?php\\|<\\? \\|<\\?=" "\\?>") - (js-mode "") - (css-mode ""))) - (setq mweb-filename-extensions '("php" "htm" "html" "ctp" "phtml" "php4" "php5")) - (multi-web-global-mode 1) - - ; load sql-indent when sql is loaded - (eval-after-load "sql" - '(load-library "sql-indent")) - ; fix up tmux xterm keys ; stolen from http://unix.stackexchange.com/questions/24414/shift-arrow-not-working-in-emacs-within-tmux (defun fix-up-tmux-keys () @@ -2327,10 +2396,16 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori (ad-activate 'ask-user-about-supersession-threat) #+END_SRC -* Server +* Start Server #+BEGIN_SRC emacs-lisp - (unless (server-running-p) - (server-start)) + (use-package server + :config + (setq server-name + (or (getenv "EMACS_SERVER_NAME") + "server")) + (unless (server-running-p) + (global-set-key "\C-xp" 'server-edit) + (server-start))) #+END_SRC