#+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))
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)
(add-hook 'minibuffer-exit-hook #'don/minibuffer-exit-hook)
#+END_SRC
* Modules
+** Hippie Expand
+#+BEGIN_SRC emacs-lisp
+ (use-package hippie-expand
+ :bind* (("M-<SPC>" . hippie-expand))
+ )
+#+END_SRC
** Flyspell π
#+BEGIN_SRC emacs-lisp
(use-package flyspell
))
#+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-<tab>" #'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)
** 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
#+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))
:config
(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"))
((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")
)
[[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
** Spamassassin Mode
#+BEGIN_SRC emacs-lisp
(use-package spamassassin-mode
- :defer
+ :commands spamassassin-mode
:ensure f
)
#+END_SRC
: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 "> ")
)
* 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
(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)
(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.
(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 "<script +\\(type=\"text/javascript\"\\|language=\"javascript\"\\)[^>]*>" "</script>")
- (css-mode "<style +type=\"text/css\"[^>]*>" "</style>")))
- (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 ()
(clear-visited-file-modtime)
(not-modified)))
(ad-activate 'ask-user-about-supersession-threat)
-
- (global-set-key "\M- " 'hippie-expand)
-
#+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